• undefined:表示“未定义”或不存在,即由于目前没有定义,所以此处暂时没有任何值
  • null:表示空值,即此处的值为空

区别是这样的:
null是一个表示“空”的对象,转为数值时为0
undefined是一个表示”此处无定义”的原始值,转为数值时为NaN

  1. if (!undefined) {
  2. console.log('undefined is false');
  3. }
  4. // undefined is false
  5. if (!null) {
  6. console.log('null is false');
  7. }
  8. // null is false
  9. undefined == null
  10. // true

布尔值

布尔值代表“真”和“假”两个状态。“真”用关键字true表示,“假”用关键字false表示。布尔值只有这两个值。

下列运算符会返回布尔值:

  • 前置逻辑运算符: ! (Not)
  • 相等运算符:===!====!=
  • 比较运算符:>>=<<=

如果 JavaScript 预期某个位置应该是布尔值,会将该位置上现有的值自动转为布尔值。转换规则是除了下面六个值被转为false,其他值都视为true

  • undefined
  • null
  • false
  • 0
  • NaN
  • ""''(空字符串)