乐趣区

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 不允许直接访问保存在堆内存中的对象,在访问一个对象时,首先得到的是这个对象在栈内存中的地址,然后按照这个地址去获得存储在堆中的值。

    赋值方式不同

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