最开始看见这个辨析是在刷题
题目要求你写出程序结果
把undefine/null/“”
放在了if
中一起辨析
其实刚开始我是有一点不确定的
因为没有完全掌握
var a;
console.log(a);//undefined
console.log(typeof a);//undefined
if(a){
console.log(true);
}else
console.log(false);
输出false
因为此时此刻的a
是undefined,所以在if
条件中不为true
var b="undefined";
console.log(b);//string类型
console.log(typeof b);
if(b){
console.log(true);
}else
console.log(false);
输出true
,因为b是一个字符串,字符串的内容是“undefined”
,b为string
类型。
var c=null;
console.log(c);//null
console.log(typeof c);//object
if(c){
console.log(true);
}else
console.log(false);
输出false
当使一个变量的值为null
时,它是一个对象,是一个空的对象,所以在if条件中的c
此时此刻是一个空对象
,当然不为true
。
var d="";
console.log(d);//“”
console.log(typeof d);//string
if(d){//为空
console.log(true);
}else
console.log(false);//false
输出false
,因为这是一个空值。它的类型为string
var e=" ";
console.log(e);//“”
console.log(typeof e);//string
if(e){//为空格字符
console.log(true);//true
}else
console.log(false);
输出true
因为e是一个字符,字符内容是一个空格,不为空,所以输出true
f(undefined===null){
console.log(true);
}else
console.log(false);//false
undefined和null在===
条件下为假命题
因为undefined和null都为空
但是null的类型只能是object,所以他们的类型是不一样的
console.log(typeof undefined);//undefined
console.log(typeof null);//object