• JS强制类型转换和自动类型转换

    强制类型转换

    JavaScript 支持使用以下函数进行强制类型转换。

    • Boolean(value):把参数值转换为布尔型值。
    • Number(value):把参数值转换为数字。
    • String(value):把参数值转换为字符串。

    在下面代码中,分别调用上述 3 个函数,把参数值强制转换为新的类型值。

    console.log(String(true));  //返回字符串"true"
    console.log(String(0));  //返回字符串"0"
    console.log(Number("1"));  //返回数值1
    console.log(Number(true));  //返回数值1
    console.log(Number("a"));  //返回NaN
    console.log(Boolean(1));  //返回true
    console.log(Boolean(""));  //返回false

    注意:

    • true 被强制转换为数值 1,false 被强制转换为数值 0,而使用 parseInt() 方法转换时,都返回 NaN。
    console.log(Number(true));  //返回1
    console.log(Number(false));  //返回0
    console.log(parseInt(true));  //返回NaN
    console.log(parseInt(false));  //返回NaN
    • 当值包括至少一个字符的字符串、非 0 数字或对象时,Boolean() 强制转换后都会返回 true。
    • 如果值是空字符串、数字 0、undefined 或 null,Boolean() 强制转换后都会返回true。
    • Number() 强制转换与 parseInt() 和 parseFloat() 方法的处理方式不同,Number() 转换的是整体,而不是局部值。
    console.log(Number("123abc"));  //返回NaN
    console.log(Number("123abc"));  //返回数值123
    • String() 能够把 null 和 undefined 强制转换为对应字符串,而调用 toString() 方法将引发错误。
    console.log(String(null));
    console.log(String(undefined));
    console.log(null.toString());
    console.log(undefined.toString());

    在 JavaScript 中,使用强制类型转换非常有用,但是应该根据具体应用场景使用,以确保正确转换值。

    自动类型转换

    JavaScript 能够根据具体运算环境自动转换参与运算的值得类型。下面简单介绍常用值在不同运算环境中被自动转换的值列表。

    数据类型自动转换列表
    值(value) 字符串操作环境 数字运算环境 逻辑运算环境 对象操作环境
    undefined "undefined" NaN false Error
    null "null" 0 false Error
    非空字符串 不转换 字符串对应的数字值NaN true String
    空字符串 不转换 0 false String
    0 "0" 不转换 false Number
    NaN "NaN" 不转换 false Number
    Infinity "Infinity" 不转换 true Number
    Number.POSITIVE_INFINITY "Infinity" 不转换 true Number
    Number.NEGATIVE_INFINITY "-Infinity" 不转换 true Number
    -Infinity "-Infinity" 不转换 true Number
    Number.MAX_VALUE "1.7976931348623157e+308" 不转换 true Number
    Number.MIN_VALUE "5e-324" 不转换 true Number
    其他所有数字 "数字的字符串值" 不转换 true Number
    true "true" 1 不转换 Boolean
    false "false" 0 不转换 Boolean
    对象 toString() valueOf() 或 toString() 或 NaN true 不转换

更多...

加载中...