空数组是true,空字符串是false,0是false;
var a = []
if (a) {
console.log(11)
}
var b = ''
if (b) {
console.log(22);
}
var c = 0
if (c) {
console.log(33);
}
打印结果:
11
原因:
js中有默认的隐式转换。
以下是数字和字符串隐试转换规则:
任何非零的数为true,0为false。
字符串来说任何非空字符串为 true,空字符串为false。
所以 0转换成布尔为false ,“”
转化成布尔为false 所以结果为true,如果想非自动隐试转换判断可以使用=== 或者 !==替代 和! 例如:
console.log(""===0) //false