Undefined 与 Null
undefined 表示什么状态?
- 语义: 已声明但未初始化的值;
- 产生位置: 声明未赋值、函数无返回值、访问不存在的对象属性、未传的函数参数;
- 常见用途: 表示可选值缺失;
let message;
console.log(message); // undefined
null 表示什么状态?
- 语义: 已经定义, 但显式地指向空;
- 常见用途: 初始化一个将来要放对象的变量;
- 区别:
undefined是"还没有值",null是"值就是空";
let person = null; // 准备稍后放对象
两者如何比较与判断?
- 宽松相等:
null == undefined为true, 且null只与undefined宽松相等; - 严格相等:
null === undefined为false; - 一次性判断:
value == null同时命中两者; - 布尔值: 两者都是假值, 详见 Boolean;