美文网首页web前端面试题汇总Web前端开发Web前端之路
javascript中值类型和引用类型的区别

javascript中值类型和引用类型的区别

作者: loushumei | 来源:发表于2020-04-11 19:15 被阅读0次

    js的变量类型有哪些

    1、值类型(基本类型):
    字符串(string)
    数值(number)
    布尔值(boolean)
    undefined、null
    2、引用类型:
    对象(Object)
    数组(Array)
    函数(Function)

    值类型和引用类型的区别

    【值类型】

    1.占用空间固定,保存在栈中,在当前环境执行结束时销毁
    2.保存和赋值是值的本身
    3.可以使用typeof检测数据类型
    4.基本类型数据是值类型

    【引用类型】

    1.占用空间不固定,保存在堆中,只有在引用的它的变量不在时,会被垃圾回收机制回收。 (引用变量存储在栈中的是指向堆中的数组或者对象的地址 )
    2.保存与复制的是指向对象的一个指针
    3.使用instanceof检测数据类型
    4.使用new()方法构造出的对象是引用型

    上述区别代码演示:
    
    // **值类型:Number、string、bollean、undefined
    var a = 100
    var b = a
    a = 200
    console.log(b) // 100 保存与复制的是值本身
     
     
    // **引用类型:对象、数组、函数、null(空指针)
    // 可以扩展属性
    var a = {age:20}
    var b = a
    b.age = 21 
    console.log(a.age) // 21 
    
    // **type of能判断哪些类型(问题 1)
    // 所有的值类型
    let a
    console.log(typeof a) //undefined
    console.log(typeof 'abc') //string
    console.log(typeof 100) //number
    console.log(typeof true) //boolean
    console.log(typeof Symbol('s')) //symbol
    //能判断函数
    console.log(typeof console.log) //function
    console.log(typeof
        function () {}) //function
    //能判断引用类型(不能再继续识别)
    console.log(typeof null) //object
    console.log(typeof ['a', 'b']) //object
    console.log(typeof {
        x: 100
    }) //object
    
    
    // 用instanceof来区分引用类型
    
    // 如果变量是给定引用类型(根据它的原型链来识别)的实例,那么instanceof 操作符就会返回 true。
    

    值类型和引用类型存储示意图


    2-1值类型和引用类型.png

    相关文章

      网友评论

        本文标题:javascript中值类型和引用类型的区别

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