undefined: 表明一切未知的事物,什么也不是,连"空"都不是,这种东西代码没法处理!
什么叫没法处理?
只要有undefined参与的运算最终的结果都不能使用 javascript
在真值判断中undefined也被解释为false,这个什么也不是的东西,是怎么也不能解释为true的! java
但它倒是全局对象window的一个属性[alert('undefined' in window);//true];
注意:它不是javascript的关键字,这也就意味着你能够为一个对象定义一个属性名字为"undefined"[obj.undefined=1],可是通常不建议这么作。
typeof(undefined) 返回也是 undefined。
能够将undefined赋值给任何变量或属性,但并不意味了清除了该变量。
若是你从一个undefined的变量中读取属性的话,那就等着浏览器报错吧。因此在程序中读取不肯定的变量的属性的时候必定要先判断这个变量是否可用。 浏览器
null:空,不存在任何东西,可是程序能够对他进行处理!
什么叫能够处理? spa
注意:typeof(null)返回object(为何是object,这个真解释不了,javascript就这么定义的),但null并不是object,具备null值的变量也并不是object。
在真值运算中null被解释为false。[var a=null;if(a){...}else{//走这个}]. orm
boolean:再明确不过的东西,无需解释。
注意:undefined,null,"",0,NaN在真值运算中都将解析成false!Infinity 却被解析成true! 对象
number: 数字,包含内置对象,NaN和Infinity
注意:typeof(NaN)和typeof(Infinity)都返回number 。
NaN参与任何数值计算的结构都是NaN,并且 NaN != NaN 。Infinity / Infinity = NaN 。 ip
string: 字符串。任何东西和字符串作+运算都将获得字符串。 字符串
复杂数据类型
object:在JavaScript中无论多么复杂的数据和代码,均可以组织成object形式的对象。 string
function
若是一个变量可以被执行,那么能够说这是一个function类型的对象。 it