javascript数据类型

发布日期:2017-04-06 阅读量:380

   1. 基本类型

   string/number/boolean/null/undefined

   2. 引用数据类型

   Object(object/array/function)

   两者区别:

  •    存储位置:
  •        基本数据类型存储在栈中,占据固定大小的空间
  •        引用数据类型存储在堆中,动态分配内存空间
  •    访问机制:
  •        因为存储机制不同导致访问机制不一样,堆内存不能直接进行操作,只能通过堆内存在栈内存中对应的引用地址。
  •        基本数据类型可以直接操作。
  •        引用数据类型通过引用地址找到对应堆内的实体。
  •    复制不同:
  •        基本数据类型复制的是原始值,
  •        引用数据类型复制的是引用地址
  • 3. null和undefined的区别及应用
  •    1)都是代表没有值
  •    2)null表示“没有该对象”,该处不应该有值,undefined表示"缺少值",该处应该有值,但是还没有定义
  •    3)转为数值不同:null转为数值为0, undefined转为数值为NaN
  •    4)null
  •    (1)作为函数参数,表示该函数的参数不是对象;
  •    (2)作为原型链的终点
  •    (3)typeof null输出是object:计算机只识别0和1,对象为000xxx...开头的(前三位都是0),null代表空指针即000000...前三位也是0所以会被识别为object
  •    5)undefined
  •    (1)变量被声明了但是没有赋值;
  •    (2)调用函数时应提供的参数没有提供,该参数就等于undefined;
  •    (3)对象没有赋值操作,该属性的值为undefined;
  •    (4)函数没有返回值时,默认返回undefined
  • 4. typeof NaN
  •       NaN的数据类型为number

    console.log(typeof NaN); // number        

           NaN(not a number)不是一个数字,表示是否属于number类型的一种状态:是或否,不是一个确切的值, 所以两个NaN不相等。

    console.log(NaN == NaN); // false

           NaN 若是表达式的返回值,则表示存在不可转化的变量,返回的是一个无效结果,不是一个确切的返回值

    var str = 'abc';
    console.log(Number(str)); // NaN