null和undefined有相同点,也有不同的地方,总结下异同点如下:
相同点
-
Undefined类型衍生自Null类型,因此在使用相等比较符判断时会返回true
console.log(null == undefined); // true
-
null和undefined在if条件或while循环语句中都会被转换为false,使用Boolean()转型函数同样都会被转换为false。
console.log(Boolean(null)); // false console.log(Boolean(undefined)); // false
Null类型和Undefined类型都只有一个值
-
null和undefined都没有对应的包装对象,因此在这两个类型上调用属性和方法时都会抛出异常。
let a = null; let b; console.log(a.name); // Uncaught TypeError: Cannot read property 'name' of null console.log(b.name); // Uncaught TypeError: Cannot read property 'name' of undefined
不同点
-
Null类型和Undefined类型是两种不同的基本类型,因此使用typeof操作符检测时会返回不同的值。
console.log(typeof null); // 'object' console.log(typeof undefined); // 'undefined'
因此使用全等操作符进行判断时会返回false。
console.log(null === undefined); // false
需要进行字符串类型的转换时,null会转换成'null',undefined会转换成'undefined'。
-
转换成数字类型时,null会转换成0,而undefined则会转换成NaN。
console.log(Number(null)); // 0 console.log(Number(undefined)); // NaN
没必要给变量显式赋值为undefined,而当我们定义一个变量想要以后保存对象时,可以赋值null。