null,undefined和布尔值
bull 和 undefined
概述
null 和 undefined 都可以表示 没有,含义非常类似,将一个变量赋值为 undefined 或 null,语法效果几乎没有区别
在 if 语句中,它们都会被自动转为 false,相等运算符 == 甚至直接报告两者相等
在谷歌开发的 JavaScript 的替代品 Dart 语言,就明确规定只有 null,没有 undefined
造成有两个如此相似的数据类型的,是历史原因。
1995年,JavaScript 诞生时,像 Java 一样只设置了 null 表示 无,根据 C 语言的传统,null 可以自动转为 0
但是,JavaScript 的设计者 Brendan Eich,觉得这样做不够
null 就像 Java 里一样,被当成一个对象,Brendan Eich 觉的表示 无 的值最好不是对象
并且当时 JavaScript 没有错误处理机制,Brendan Eich 觉得 null 自动转为 0,很不容易发现错误
因此,undefined 被设计了出来,和 null 区别如下:
null 是一个表示 空 的对象,转为数值时为 0;
undefined 是一个表示 此处无定义 的原始值,转为数值时为 NaN
用法和含义
null 表示空值,即该处的值现在为空。调用函数时,某个参数未设置任何值,这时就可以传入 null,表示该值为空
undefined 表示 未定义,下面是返回 undefined 的典型场景
布尔值
布尔值代表 true 和 false 两个状态
下列运算符会返回布尔值:
前置逻辑运算符:! (Not)
相等运算符:=== !== == !=
比较运算符:> >= < <=
如果 JavaScript 预期某个位置应该是布尔值,会将该位置现有的值自动转换为布尔值。转换规则是除了下面六个值被转为 false,其他值都视为 true
undefined
null
false
0
NaN
"" 或 '' 空字符串
注意,空数组 [] 和 空对象 {} 对应的布尔值都是 true
最后更新于
这有帮助吗?