Javascript 为什么x=0等于x='';
我不明白为什么不根据下面的代码调用下面的console.log。x当然不等于“”,因为它被设置为0Javascript 为什么x=0等于x='';,javascript,Javascript,我不明白为什么不根据下面的代码调用下面的console.log。x当然不等于“”,因为它被设置为0 var x=0; 如果(x!=''){ console.log('here',x); }您需要使用==而不是= var x=0; 如果(x!=''){ console.log('here',x); }这里有一篇很好的文章解释JavaScript中的“真实性”和“错误性”: 要避开它,请使用严格的比较这是因为0是一个伪值() 如果要检查确切的类型和值,请尝试===运算符 if (x === 0
var x=0;
如果(x!=''){
console.log('here',x);
}
您需要使用==代码>而不是=代码>
var x=0;
如果(x!=''){
console.log('here',x);
}
这里有一篇很好的文章解释JavaScript中的“真实性”和“错误性”:
要避开它,请使用严格的比较这是因为0是一个伪值()
如果要检查确切的类型和值,请尝试===运算符
if (x === 0) console.log("zero here)
这是因为您正在使用
将两个值转换为公共类型后,Lose equality会比较两个值是否相等。转换后(一方或双方可能进行转换),最终相等比较的执行方式与==
执行的方式完全相同
=
将两个操作数转换为公共类型。这里的0
是Number
,因此它将使用Number(“”)
将'
转换为Number
,并且Number(“”)返回0
,这就是0=='
的原因
如果要避免这种情况,可以使用==
和==代码>
console.log(编号(“”))//0
var x=0;
如果(x!=''){
console.log('here',x);
}
另请参见仅在falsy/truthy
上运行的JavaScript比较。您需要使用==
或===
来比较类型。
if (x === 0) console.log("zero here)