1.null和undefined
1.1 概述
null和undefined都可以表示“没有”,含义非常相似。 在if语句中,它们都会被自动转为false,相等运算符(==)直接报告两者相等。 谷歌公司开发的JavaScript语言替代品Dart语言,明确规定只有null没有undefined。 Brendan Eich认为null表示“无”还不够,表示“无”的值最好不是对象,而且null自动转为0不容易发现错误,因此设计了undefined。 区别是:null是一个表示“空”的对象,转为数值为0;undefined是一个表示“此处无定义”的原始值,转为数值为NaN。
1.2 用法和含义
对于null和undefined,可以这样理解。 null表示空值,该处的值为空,调用函数时,某个参数未设置任何值,这时可以传入null,表示该参数为空。 undefined表示“未定义”
- 变量声明了,但是没有赋值
- 调用函数时,应该提供的参数没有提供,该参数等于undefined
- 对象没有赋值的属性
- 函数没有返回值时,默认返回undefined
2.布尔值
布尔值代表两个状态:“真”用关键字true表示,“假”用关键字false表示,布尔值只有这两个值。 下列运算符返回布尔值:
- 前置逻辑运算符:!(not)
- 相等运算符:===,!==,==,!=
- 比较运算符:>,>=,<,<= 如果JavaScript某个位置预期是布尔值,会将该位置上现有的值自动转为布尔值。转换规则是除了下面六个值被转为false,其他值都视为true。
- undefined
- null
- false
- 0
- NaN
- '' 或 ""(空字符串) 注意,空数组([])和空对象({})对应的布尔值,都是true。