JavaScript的undefined与null、NaN的区别
Javascript的数据类型
在JavaScript中,有三种住数据类型、两种复合数据类型和两种特殊数据类型。
1.主数据类型(基元数据类型)
- 字符串
String数据类型:
字符串值是一个由零个或者多个Unicode字符组成的链表。使用字符串数据类型表示JavaScript中的文本。在脚本中包含字符串,方法是使用单引号或者双引号将其括起来。被单引号引起的字符串内可以包含双引号,而被双引号引起的字符串可以包括单引号。z在JavaScript中没有表示单个字符的类型。若要表示JavaScript中的单个字符,可以创建仅由一个字符组成的字符串。包含字符("")的字符串是空(零长度)字符串。在JavaScript中可以包含字符串中的转义序列,用来创建不能直接键入的字符串(转义符:\)。
例如:
var str ="hello 'word' "; var str1 ='hello "word"';
- 数字
Number数据类型:
在JavaScript中,整数值和浮点值之间没有区别:JavaScript数字可以是两种类型中的任意一种,在内部JavaScript作为浮点数表示所有的数字。
注意:
在JavaScript包含具有特殊值的数字:
●NaN(不是数字)。当对不适当的数据(例如字符串或者未定义值)执行数学运算时使用该值。
●正无穷大,当一个正数太大以至于在JavaScript中无法表示时,可使用该值。
●负无穷大。当一个负数太大以至于在JavaScript中无法表示时,可使用该值。
●正0和负0.JavaScript区分正零和负零。
- Boolean
虽然字符串和数字类型实际上可以有无限多个不同的值,但是布尔值数据类型只能有两个值。他们是true和false。
2.复合数据类型(引用数据类型)
- Object
- 数组
3.特定数据类型(特殊数据类型)
- Null
null数据类型在JavaScript中仅具有一个值:null。null关键字不能用作函数或者变量名称。包含null的变量不包含有效的数字、字符串、布尔值、数组或者对象。通过为变量赋值null值可以清除变量的内容,但是不删除变量。在JavaScript中的typeof运算符将null值报告为Object类型而不是null类型。
- 未定义(undefined)
如果使用的对象属性不存在或者使用的是已声明但是未赋值的变量,返回的是undefined值。您可以通过将变量与undefined进行比较来确定变量是否存在也可以通过将变量类型与字符串“undefined”进行比较来确定。
总结:
在JavaScript中,null是一种特殊的object类型,NaN是一种特殊的number类型,未定义的值或者定义未赋值的变量为undefined。
null是关键字;undefined是Global对象的一个属性。
null是对象(空对象,没有任何属性和方法);undefined是undefined类型的值。
null等值(==)于undefined,但是null不全等(===)于undefined。
在运算时,null于undefined都可以被类型转换为false,但是他们不等值于false。