美文网首页
JS里的数据类型转换

JS里的数据类型转换

作者: 凛冬的守夜人 | 来源:发表于2019-03-28 16:42 被阅读0次

    一、其它数据类型转字符串的方法

    1、tostring()

    var n = 1
    n.tostring()        
     //"1"
    var n = true
    n.tostring()       
     //"true"
    var obj = {}
    obj.tostring()      
    //"[object Object]"
    

    null, undefined无法通过tostring变字符串

    2、x + ''

    1+''           //"1"
    true+''       //"true"
    obj+''        //"[object Object]"
    null+''       //"null"
    undefined+''    //"undefined"
    

    3、String()

    var n=1
    String(n)  
    //"1"
    

    二、其它数据类型转布尔值的方法

    1、Boolean()

    Boolean(1)                //true
    Boolean(123)              //true
    Boolean(0)                //false
    Boolean('')               //false
    Boolean(' ')              //true
    Boolean(null)             //false
    Boolean(undefined)        //false
    Boolean({})               //true
    

    2、!!x

    !!1             //true
    !!0            //false
    !!null        //false
    

    在变布尔值时,以下五个是变为false:
    0     NaN     ''      null      undefined

    三、其它数据类型转数值的方法

    Number()

    parseInt()

    parseFloat()

    '1'-0

    +'1'

    四、4个关于内存的题目

    在js中,基本类型存储在栈中,复杂类型,也就是object存储在堆中。

    题目一:

    var a = 1
    var b = a
    b = 2
    a = ?

    答:a = 1

    题目二:

    var a = {name:'a'}
    var b = a
    b = {name:'b'}
    a.name = ?

    答:a.name = a

    题目三:

    var a = {name:'a'}
    var b = a
    b.name = 'b'
    a.name = ?

    答:a.name = b

    题目四:

    var a = {name:'a'}
    var b = a
    b = null
    a.name = ?

    答:a.name = a

    一道较难的题目:

    var a = {n:1}
    var b = a
    a.x = a = {n:2}

    alert(a.x)        //undefined
    alert(b.x)        //[object Object]

    五、深拷贝和浅拷贝

    var a = 1
    var b = a
    b = 2
    a = ?

    此时a的值仍为1,b变不影响a变,这就是深拷贝
    基本类型的赋值都是深拷贝
    var a = {name:'a'}
    var b = a
    b.name = 'b'
    a.name = ?

    此时a的name为'b',b变影响a变,这就是浅拷贝

    相关文章

      网友评论

          本文标题:JS里的数据类型转换

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