Javascript 数据类型

五种原始类型(值类型):Undefined Null Boolean Number String Symbol(ECMScript6)
一种对象类型(引用类型):Object

undefined类型

  • 只有一个值:undefined
  • 使用var声明变量但未初始化,变量的值就为undefined
  • 对未初始化和未声明的变量执行typeof操作符都返回undefined值,即:
    1
    2
    3
    var message;
    alert(typeof message);//"undefined"
    alert(typeof age);//"undefined"

Null类型

  • 只有一个值:null
  • alert(null == undefined);//true

boolean类型

  • 两个值:true,false
  • ECMAScript所有类型都可以转换为布尔值,调用Boolean()
  • 有六个数据可以转换为false,分别为:null、undefined、0、-0、NaN、空字符串

Number类型

String类型

  • 将任何类型的值转换为字符串:String()函数,转换规则如下:
    1.如果值有toString()方法(null和undefined没有这个方法),则调用此方法。
    2.如果值为null,则返回”null”。
    3.如果值为undefined,则返回”undefined”。
  • 使用加减号操作符进行转换:
    num - 0//将字符串变为数字
    num + ‘’//将数字变成字符串

Object类型

  • var o = new Object();

null和undefined的区别

  • 相同点:两种数据类型都只有一个值,参与判断都返回false,都没有方法。
  • 不同点:
    1. null是关键字,undefined不是关键字。
    2. null是对象,undefined是windows的一个属性。
    3. 定义变量未初始化时默认值为undefined,如果为null表示已经初始化。
    4. typeof返回值不一样。
    5. 将undefined转换为数字,即Number(undefined),返回NAN。将null转换为数字,即Number(null),返回0。
1
2
3
4
typeof null; //object;
typeof undefined; //undefined
null === undefined; //false
null == undefined; //true 会执行类型转换
  • 用法:
    1. 在声明一个变量时可以不赋值,如果一定要赋值,赋为null。
    2. 检测某个值是否是未定义的,用(?=== undefined)。
    3. 检测某个值是否为空,用(?=== undefined)。

===和==区别

  • a===b
    判断等号两边的类型
    1.类型不同,返回false;
    2.类型相同:
    1
    2
    3
    4
    null === null  //true
    undefined === undefined //true
    NaN === NaN //false
    new Object === Object //false
  • a==b
    1.类型相同,同===
    2.类型不同,则类型转换之后比较。

值类型和引用类型的区别

值类型:number boolean null undefined
值类型在内存中占据固定大小的空间,保存在栈内存中;从一个变量向另一个变量赋值值类型的值,会创建这个值的一个副本。
引用类型:对象 数组 函数
引用类型的值是对象,保存在对内存中;从一个变量向另一个变量赋值引用类型的值,复制的其实是指针,两个变量最终都指向同一个对象。