美文网首页
JS的基本类型和引用类型

JS的基本类型和引用类型

作者: 綪比纸薄 | 来源:发表于2020-03-28 14:50 被阅读0次

    基本类型 (numberm string, boolean, null, undefined,symbol)

    1.基本类型的值是不可变的

    任何方法都不能改变一个基本类型的值

     var name = 'pp'
     name.toUpperCase(); // PP
     console.log(name); //pp
    

    基本类型的值不能添加属性和方法

      var person = 'pp'
      person.age = 22
      person.method = function(){}
      console.log(person.age) // undefined
      console.log(person.method) // undefined
    

    更加证明基本类型的值是不可变的

    2.基本类型的比较是值比较

    只有在他们的值相等的时候它们才相等

    var a = 1
    var b = true
    console.log(a == b) // true 当两个值的类型不同的时候==运算符会进行类型转换
    console.log(a===b) // false
    

    3.基本类型的变量是存放在栈区的(栈区值内存里的栈区)

    栈区包括了变量的标识符和变量的值

    引用类型(Object, Array, Function, Date) 除了基本类型就是引用类型

    1.引用类型的值是可变的

    可以为引用类型添加/删除属性和方法

      var attr = {}
      attr.name = 'Pp'
      attr.age = 18
      attr.method = function () {
        console.log(attr.age)
      }
      console.log(attr.name) // name
      attr.method() // 22
      delete attr.age
      console.log(attr.age) // undefined
    

    2.引用类型的值是同时保存在栈内存和堆内存中的对象

    JS不允许访问内存的位置,也就是说不能直接操作对象的内存空间.我们操作对象实际上是操作对象的引用
    所以引用类型的值都是按引用访问的.
    引用类型的储存需要内存的栈去和堆区共同完成,栈区内存保存变量标识符和指像堆内存中该对象的指针

    3.引用类型的比较是引用的比较

    var attr1 = {}
    var attr2 = {}
    console.log(attr1 == attr2) // false
    

    引用类型时按引用访问的,比较两个对象的堆内存的地址是否相同

    相关文章

      网友评论

          本文标题:JS的基本类型和引用类型

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