null:
null是js中的关键字,表示空值,null可以看做是object中的一个特殊的值,如果一个object值为空,表示这个对象不是有效的对象。
undefined:
undefined不是js中的关键字,其是一个全局变量,是Globa的一个属性,一下情况会返回undefined
//(1)使用一个未赋值的变量:var num;
//(2)使用已赋值但未声明的变量:num=1;
//(3)使用一个对象属性,但该属性不存在或者未赋值
//(4)调用函数时,该提供的参数没有提供
function fn(a){
console.log(a);
}
fn();//undefined
//(5)函数没有返回值时,默认返回undefined
var ss=fn();
console.log(ss);//undefined
相同点:
都是原始类型的值,保存在栈中变量本地
两者的区别:
//1.类型不一样
console.log(typeOf undefined);//undefined
console.log(typeOf null);//object
//2.转化为值时不一样:undefined为NaN,null为0
console.log(Number(undefined));//NaN
console.log(Number(10+undefined));//NaN
console.log(Number(null));//0
console.log(Number(10+null));//10
//3.undefined===null;//false
undefined==null;//true