JS中null和undefined的区别
undefined的语义是未定义,null的语义是空对象的引用
几种undefined的场景
- 已声明未赋值的变量
- 对象不存在的属性
- 函数参数未传入实参
- 函数无返回值的调用
- void 1 (无需记)
var a;
console.log(a); //undefined
var obj = {};
console.log(obj.a); //undefined
function foo(a){
console.log(a); //undefined
}
console.log(foo()); //undefined
void 2 //undefined
null
null的语义是空对象的引用,最初设计时只有null, 而且类C语言 null 与0相等
其他
console.log(typeof null) // Object
console.log(typeof undefined) //undefined
console.log(String(undefined)) //undefined
console.log(Number(undefined)) //NaN
console.log(Boolean(undefined)) //false
console.log(String(null)) // null
console.log(Number(null)) // 0
console.log(Boolean(null)) // false