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

JS数据类型转换

作者: kiterumer | 来源:发表于2019-04-04 13:00 被阅读0次

    任意类型转字符串

    1. String(x)
    2. x.toString()
    3. x + " (推荐)

    需要记住的5个falsy值

    • 0
    • NaN
    • ''
    • null
    • undefined

    falsy值是在Boolean上下文中认定可转换为false的值。除上面5个外,其他都为true

    任意类型转数字

    1. Number(x)
    2. parseInt(x,10)
    3. parseFloat(x)
    4. x - 0
    5. +x

    任意类型转布尔

    1. Boolean(x)
    2. !!x


    关于内存

    1. 操作系统开机即占用 512MB
    2. Chrome 打开即占用 1G 内存
    3. Chrome 各每个网页分配一定数量的内存
    4. 这些内存要分给页面渲染器、网络模块、浏览器外壳和 JS 引擎(V8引擎)
    5. JS 引擎将内存分为代码区和数据区
    6. 我们只研究数据区
    7. 数据区分为 Stack(栈内存) 和 Heap(堆内存)
    8. 简单类型的数据直接存在 Stack 里
    9. 复杂类型的数据是把 Heap 地址存在 Stack 里

    画图解决一切想当然。

    深复制,浅复制

    var a = 1
    var b = a
    b = 2 //这个时候改变 b
    a 完全不受 b 的影响
    那么我们就说这是一个深复制
    

    对于简单类型的数据来说,赋值就是深拷贝。
    对于复杂类型的数据(对象)来说,才要区分浅拷贝和深拷贝。

    这是一个浅拷贝的例子

    var a = {name: 'frank'}
    var b = a
    b.name = 'b'
    a.name === 'b' // true
    

    因为我们对 b 操作后,a 也变了

    什么是深拷贝了,就是对 Heap 内存进行完全的拷贝。

    var a = {name: 'frank'}
    var b = deepClone(a) // deepClone 还不知道怎么实现
    b.name = 'b'
    a.name === 'frank' // true
    

    相关文章

      网友评论

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

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