js的数据类型分为两类:原始类型(primitive)和对象类型(object type)。原始类型包括null、undefined、数字、字符串、布尔型。
- 原始类型的值不能被更改。不论是字符串更改或其他,并不会影响到原来的值,而只是创建一个新的引用。如
var a = "hello"; a.len = 2; alert(a.len); //undefined. a为原始类型
null和undefined
- ECMA规定undefined == null
- typeof null返回"object",因为它实际表示的是一个空对象指针
数字
- 判断变量是否NaN:
x!=x
因为NaN并不等于自身
对象
- 字符串不是对象,但当引用了字符串的属性时,js会将字符串值通过调用new String(s)的方式临时转换成对象,用来处理属性的引用。
- 通过new String()等构造函数创建的对象叫包装对象。
类型转换
- undefined可以在if中被转换为false,但undefined != false
- +x等价于Number(x),也可以写成x-0
- !!x等价于Boolean(x)