js原始类型归纳总结

  • 原始类型:

       Boolean
       Number
       String
       Null
       Undefined
       Symbol(ES6新增)
    
  • 复杂数据类型:

       Object
    
  • ES10新增了一种基本数据类型:

       BigInt
    
  • null是不是对象?

       null不是一个对象,尽管 typeof null === “object”, 这是一个历史遗留问题,原理是不同的对象在底层都是用二进制来表示的,在js中二进制前三位是0既判断为对象,null的二进制表示全是0,即前三位都是0,所以执行typeof(null)的时候返回object,实际上null是基本数据类型。
       
    
  • 基本数据类型和复杂数据类型的区别:

    内存分配不同

       基本数据类型存储在栈中。
       复杂数据类型存储在堆中,栈中存储的地址,是指向堆中的引用地址,属性及值存储在堆中。
    

    访问机制不同

       基本数据类型是按值访问
       复杂数据类型是按引用访问,JS不允许直接访问保存在堆内存中的对象,在访问一个对象时,首先得到的是这个对象在栈内存中的地址,然后按照这个地址去获得存储在堆中的值。
       

    赋值方式不同

       基本数据类型作为参数时,修改基本数据类型的参数不影响原有数据,复杂数据类型,是通过引用地址来访问的,所以作为参数时,修改        属性后,会影响原有数据。

你可能感兴趣的:(数据类型,javascript)