美文网首页前端学习笔记
JS 里的数据类型转换

JS 里的数据类型转换

作者: 还是流星拳比较好 | 来源:发表于2018-07-06 11:31 被阅读0次
    • 任意类型转字符串

    1. x + '': null + '' // "null"
    2. x.toString() :注意此种方法用在null、undefined上会报错
      (123).toString()   // "123"
    3. String(x): String(123) // "123"
    
    • 任意类型转布尔

    1. Boolean(x):注意object无论是否为空,均为true
    2. !!x
       要记住5个falsy值:0、NaN、''、null、undefined(这五个转为布尔值均为false)
      object(对象)转为布尔全部都是true(包含数组与函数)
    
    • 任意类型转数字

    1. number(x) :number('1') // 1
    2. parseInt(x,10) :任意类型转整数
      默认为10进制整数转10进制整数,第二个参数可改为2(2进制整数转10进制整数)、
      8(8进制整数转10进制整数)、10(10进制整数转10进制整数)、16(16进制整数转10进制整数)
      例如: parseInt('1000',8)  //  512
    3. parseFloat(x):任意类型转浮点数(小数)
    4. x - 0:这是常用方法
    5. +x
    

    任意类型转null与undefined不讨论,因为不需要。


    • 内存图

    内存图

    如上图所示JS 引擎将内存分为代码区和数据区,这里主要看的是数据区。
    数据区可分为Stack(栈内存) 和 Heap(堆内存):
    1.Stack(栈内存):简单类型的数据直接存在 Stack 里
    2.Heap(堆内存):复杂类型的数据存在Heap中,然后把 Heap中所存数据的地址存在 Stack 里


    • GC(Garbage collection)垃圾回收

    垃圾回收:如果一个对象没有被引用,那么他就是垃圾,将被回收
    注意:IE6中有个BUG,不能再页面当前标签关闭时就把document中的引用变为垃圾(其他浏览器均可)。这便导致了内存泄漏,使得该被标记为垃圾的东西没有被标记为垃圾,内存会永久占着,直到将整个浏览器关闭。

    下面这个API可以解决这个问题:
    window.onunload = function(){
        document.body.onclick = null
    }
    

    • 浅拷贝与深拷贝

    深拷贝:b变不影响a
      var a = 1
      var b = a
      b = 2  //结果: b = 2, a = 1
    浅拷贝:b变导致a变(就是对Heap内存的数据进行完全拷贝)
      var a = {name:'a'}
      var b = a
      b.name = 'b'   //结果:a.name = ‘b'
    

    1.对于简单类型的数据,赋值就是深拷贝
    2.对于复杂类型的数据(对象)才需要区分浅拷贝与深拷贝

    相关文章

      网友评论

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

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