JavaScript常用的数据类型

153 阅读4分钟

JavaScript 是一种动态类型语言,它具有以下数据类型:

  1. Number(数字) :表示数值,包括整数和浮点数。例如:423.14
  2. String(字符串) :表示文本数据,由一串字符组成。可以使用单引号或双引号来表示。例如:"Hello"'JavaScript'
  3. Boolean(布尔值) :表示逻辑上的真或假。只有两个取值:true(真)和 false(假)。
  4. Array(数组) :是一种有序的数据集合。可以存储多个值,每个值称为一个元素,并且通过索引访问。数组可以包含不同类型的元素。例如:[1, 2, 3]['apple', 'banana', 'orange']
  5. Object(对象) :表示键值对的集合,每个键都是唯一的,并且与一个值相关联。对象是一种无序的数据结构,用于组织复杂的数据。例如:{ name: 'John', age: 30 }
  6. Undefined(未定义) :表示变量声明但未赋值时的默认值。如果访问未初始化的变量,其值将为 undefined
  7. Null(空值) :表示变量为空或不存在对象或数组。如果需要明确指定一个空值,可以将变量设置为 null
  8. Symbol(符号) :表示唯一且不可变的数据类型,通常用作对象属性的键。Symbol 在 ES6 中引入。
  9. BigInt(大整数) :表示任意精度的整数。它可以用于处理超过 Number 类型所能表示的范围的整数。BigInt 在 ES2020 中引入。

基本数据类型存储在栈中,栈用于存储基本数据类型和执行代码引用数据类型存储在堆中:

image.png

除了这些基本数据类型,JavaScript 还具有特殊的对象类型,例如:

  • Date(日期) :用于表示日期和时间。
  • RegExp(正则表达式) :用于描述字符串模式的对象。
  • Function(函数) :用于封装可执行的代码块。

判断数据类型有以下几种方式

  1. typeof 操作符:可以返回一个表示数据类型的字符串。例如:

    typeof 42; // "number"
    typeof "Hello"; // "string"
    typeof true; // "boolean"
    typeof []; // "object"
    typeof {}; // "object"
    typeof undefined; // "undefined"
    typeof null; // "object"
    typeof Symbol(); // "symbol"
    
  2. instanceof 操作符:用于检查对象是否属于某个特定的类型。例如:

    [] instanceof Array; // true
    {} instanceof Object; // true
    new Date() instanceof Date; // true
    /regex/ instanceof RegExp; // true
    
  3. Object.prototype.toString.call() 方法:通过调用该方法并传入要检查的值作为参数,可以获取更精确的类型信息。例如:

    Object.prototype.toString.call(42); // "[object Number]"
    Object.prototype.toString.call("Hello"); // "[object String]"
    Object.prototype.toString.call(true); // "[object Boolean]"
    Object.prototype.toString.call([]); // "[object Array]"
    Object.prototype.toString.call({}); // "[object Object]"
    Object.prototype.toString.call(undefined); // "[object Undefined]"
    Object.prototype.toString.call(null); // "[object Null]"
    Object.prototype.toString.call(Symbol()); // "[object Symbol]"
    

通过上述方法,可以对给定的值进行数据类型的判断。不过需要注意的是,typeof null 的结果是 "object",这是 JavaScript 中的一个历史遗留问题。

可以使用以下几种方式来进行数据类型转换:

  1. 显式类型转换:通过特定的函数或操作符将一个数据类型转换为另一个数据类型。常见的显式类型转换方式包括:

    • String() :将其他数据类型转换为字符串。
    • Number() :将其他数据类型转换为数字。
    • Boolean() :将其他数据类型转换为布尔值。
    • parseInt()  和 parseFloat() :将字符串解析为整数或浮点数。

    例如:

    String(42); // "42"
    Number("3.14"); // 3.14
    Boolean(0); // false
    parseInt("10"); // 10
    parseFloat("3.14"); // 3.14
    
  2. 隐式类型转换:在某些表达式中,JavaScript 会自动执行隐式类型转换以匹配运算符或上下文的预期数据类型。常见的隐式类型转换场景包括:

    • 字符串与数字之间的加法运算,将数字转换为字符串。
    • 比较运算符(如 ==!=>< 等)比较不同数据类型时进行类型转换。
    • 条件语句中的值的布尔强制转换。

    例如:

    "Hello" + 42; // "Hello42"
    "10" == 10; // true
    if (0) { // 0 被隐式转换为 false
        console.log("This will not be executed.");
    }
    
  3. 特定方法的类型转换:JavaScript 中的一些内置方法或属性可以对特定数据类型进行类型转换。例如:

    • toString() :将数字转换为字符串。
    • parseInt()  和 parseFloat() :将字符串解析为整数或浮点数。
    • Array.from() :将类似数组的对象转换为真正的数组。
    • Object.keys() :将对象中的键转换为数组。