Skip to content

JavaScript 中的类型转换主要分为两种:隐式类型转换和显式类型转换。

隐式类型转换

  1. 数学运算:当进行数学运算时,JavaScript 会自动将字符串转换为数字。

    javascript
    let num = "42";
    console.log(num + 2); // 输出 '422'
  2. 比较运算:使用==进行比较时会发生隐式类型转换,而使用===进行比较时不会发生类型转换。

    javascript
    let a = "42";
    let b = 42;
    console.log(a == b); // 输出 true
    console.log(a === b); // 输出 false
  3. 布尔运算:当一个值用于布尔运算时,它会被隐式地转换为布尔值。

    javascript
    let a = "hello";
    if (a) {
      console.log("a is truthy"); // 输出
    }

显式类型转换

显式类型转换是通过 JavaScript 提供的内置函数或全局对象将一种类型显式地转换为另一种类型。

  1. 转换为字符串

    • String() 函数:将任何类型的值转换为字符串。
    • toString() 方法:大多数 JavaScript 对象都有这个方法,用于将对象转换为字符串。
    • 使用加号运算符+:当一个值与字符串进行加法运算时,它会被转换为字符串。
    javascript
    let num = 42;
    console.log(String(num)); // 输出 '42'
    console.log(num.toString()); // 输出 '42'
    console.log(num + ""); // 输出 '42'
  2. 转换为数字

    • Number() 函数:将字符串、布尔值或对象转换为数字。
    • parseInt() 函数:将字符串转换为整数。
    • parseFloat() 函数:将字符串转换为浮点数。
    javascript
    let str = "42";
    console.log(Number(str)); // 输出 42
    console.log(parseInt(str)); // 输出 42
    console.log(parseFloat(str)); // 输出 42.0
  3. 转换为布尔值

    • Boolean() 函数:将任何类型的值转换为布尔值。
    javascript
    let str = "hello";
    console.log(Boolean(str)); // 输出 true
  4. 转换为对象

    • Object() 函数:将任何类型的值转换为对象。
    javascript
    let str = "hello";
    let obj = Object(str); // 输出 String { '0': 'h', '1': 'e', '2': 'l', '3': 'l', '4': 'o', length: 5, [[PrimitiveValue]]: 'hello' }
  5. 转换为函数

    • Function() 构造函数:将字符串转换为函数。
    javascript
    let str = 'function() { console.log("Hello, world!"); }';
    let func = new Function(str);
    func(); // 输出 Hello, world!

在进行类型转换时,需要注意转换的规则和可能产生的结果,例如parseInt()parseFloat()在解析失败时会返回NaN(Not a Number),而Number()在转换失败时也会返回NaN。此外,toString()方法在某些对象上可能返回不同的结果,例如数组会返回元素组成的字符串,而nullundefined没有toString()方法,调用时会抛出错误。