五种原始类型(值类型):Undefined Null Boolean Number String Symbol(ECMScript6)
一种对象类型(引用类型):Object
undefined类型
- 只有一个值:undefined
- 使用var声明变量但未初始化,变量的值就为undefined
- 对未初始化和未声明的变量执行typeof操作符都返回undefined值,即:
1
2
3var 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,都没有方法。
- 不同点:
- null是关键字,undefined不是关键字。
- null是对象,undefined是windows的一个属性。
- 定义变量未初始化时默认值为undefined,如果为null表示已经初始化。
- typeof返回值不一样。
- 将undefined转换为数字,即Number(undefined),返回NAN。将null转换为数字,即Number(null),返回0。
1 | typeof null; //object; |
- 用法:
- 在声明一个变量时可以不赋值,如果一定要赋值,赋为null。
- 检测某个值是否是未定义的,用(?=== undefined)。
- 检测某个值是否为空,用(?=== undefined)。
===和==区别
- a===b
判断等号两边的类型
1.类型不同,返回false;
2.类型相同:1
2
3
4null === null //true
undefined === undefined //true
NaN === NaN //false
new Object === Object //false
- a==b
1.类型相同,同===
2.类型不同,则类型转换之后比较。
值类型和引用类型的区别
值类型:number boolean null undefined
值类型在内存中占据固定大小的空间,保存在栈内存中;从一个变量向另一个变量赋值值类型的值,会创建这个值的一个副本。
引用类型:对象 数组 函数
引用类型的值是对象,保存在对内存中;从一个变量向另一个变量赋值引用类型的值,复制的其实是指针,两个变量最终都指向同一个对象。