说明以下表达式的输出结果及其原因
Opened this issue · 0 comments
LadderLay commented
题目
if([]){console.log(1);}
if([].length){console.log(2);}
if({} === {}){console.log(3);}
if(''==0){console.log(4);}
分析
-
if([]){console.log(1);}
在js中,
false
的情况有:省略或值为0,-0,null,false,NaN,undefined,或空字符串("")
true
的情况有:除上述情况以外的所有其他值,包括任何对象,**空数组([])**或字符串“ false”
因此,此处的[]
空数组的布尔值为真,输出结果为1 -
if([].length){console.log(2);}
显然,[].length=0
布尔值为false,输出为undefined
3.if({} === {}){console.log(3);}
==
对于基本类型,比较的是值是否相同;对于引用类型,比较的是引用是否相同。
显然此处比较的是引用。输出为undefined
4.if(''==0){console.log(4);}
在js中,当被比较值A(String)和被比较值B(Number)进行比较时,
A == B
会被转换为ToNumber(A) === B
此处输出为4
参考链接
结尾
- == & equals 的异同
- js 中,空字符串
""
布尔值为假