美文网首页
类型转换

类型转换

作者: YangJeremy | 来源:发表于2018-02-24 10:36 被阅读0次

    我们能够从代码中看出哪些地方是显式强制类型转换,而隐式强制
    类型转换则不那么明显,例如:

    var a = 42;
    var b = a + ""; // 隐式强制类型转换
    var c = String( a ); // 显式强制类型转换
    

    数组的默认 toString() 方法经过了重新定义,将所有单元字符串化以后再用 "," 连接起来:

    var a = [1,2,3];
    a.toString(); // "1,2,3"
    

    toString() 可以被显式调用,或者在需要字符串化时自动调用。

    JSON字符串化

    • 对大多数简单值来说, JSON 字符串化和 toString() 的效果基本相同,只不过序列化的结
      果总是字符串:
    JSON.stringify( 42 ); // "42"
    JSON.stringify( "42" ); // ""42""(含有双引号的字符串)
    JSON.stringify( null ); // "null"
    JSON.stringify( true ); // "true"
    
    • JSON.stringify(..) 在对象中遇到 undefined、 function 和 symbol 时会自动将其忽略,在数组中则会返回 null(以保证单元位置不变)。
    JSON.stringify( undefined ); // undefined
    JSON.stringify( function(){} ); // undefined
    JSON.stringify(
    [1,undefined,function(){},4]
    ); // "[1,null,null,4]"
    JSON.stringify(
    { a:2, b:function(){} }
    ); // "{"a":2}
    
    

    ToNumber

    其中 true 转换为 1, false 转换为 0。 undefined 转换为 NaN, null 转换为 0

    valueOf()

    先看这段代码:

    var obj = { p: 1 };
    obj + 2 // "[object Object]2"
    

    这段代码中,对象obj先转成原始类型的值[object Object], 再加上2就得到以上的结果。

    • 对象转成原始类型的值,规则是这个样子的,首先,自动调用对象的valueOf方法,会返回对象本身,这时再自动调用对象的toString()方法,
      转为字符串:
    var obj = { p: 1 };
    obj.valueOf().toString() // "[object Object]"
    

    相关文章

      网友评论

          本文标题:类型转换

          本文链接:https://www.haomeiwen.com/subject/xshqxftx.html