美文网首页
js 数据类型转换和内存图

js 数据类型转换和内存图

作者: simon_李玉兵 | 来源:发表于2019-01-16 23:27 被阅读0次

    转成字符串

    1. toString
    var n = 1
    n.toString() // "1"
    
    var n = true
    n.toString() // "true"
    
    var n = null
    n.toString() // 报错 Cannot read property 'toString' of null
    
    var n = undefined
    n.toString() // 报错 Cannot read property 'toString' of undefined
    
    var n = {name: 'a'}
    n.toString() // "[object Object]"
    

    nullundefined都报错

    1. + ''
    1 + '' // "1"
    true + '' // "true"
    null + '' // "null"
    undefined + '' // "undefined"
    var obj = {name: 'a'}
    obj + '' // "[object Object]"
    
    1. String()
    var n = 1
    window.String(n) // "1"
    
    var n = true
    String(n) // "true"
    
    var n = null
    String(n) // "null"
    
    var n = undefined
    String(n) // "undefined"
    
    var n = {name: 'a'}
    String(n) // "[object Object]"
    

    转成Boolean

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

    5个falsy值。falsy表示他们是假的,但是不是假false
    0 NaN '' unll undefined

    转成number

    1. Number
    2. parseInt()
    3. parseFloat()
    4. - 0
    5. + 取正
    + '21' // 21
    

    内存图

    电脑开机的时候,操作系统从硬盘读取到内存。操作系统占用一定的内存,电脑打开浏览器会占用内存。浏览器把分到的内存容量分给每个页面。页面运行的js也会分配一定的内存。js再把内存分代码区数据区。数据区又分成stack(栈)heap(堆)

    当执行
    var a = 1
    var b = a
    var c = true
    var d = {name: 'a'}
    时浏览器做了什么

    解析图1.png

    关于内存的题目

    题1.png
    题2.png
    题3.png
    题4.png

    循环引用

    循环引用.png

    一个面试题


    面试题.png

    a.x = a = {n: 2} a的只一开始就确定了。为地址34。

    垃圾回收

    如果一个对象没有被引用,它就是垃圾,将被回收。


    垃圾回收1.png

    一个问题

    image.png

    此时高亮的function是否是垃圾


    image.png

    很明显不是。有document引用它

    上图中,当我们关掉页面时。document直接就不存在了。但是内部的三个还存在引用关系。在ie中存在一个bug,会认为这三个对象不是垃圾。

    相关文章

      网友评论

          本文标题:js 数据类型转换和内存图

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