在javascript中,检查变量是否设置的一种(公认的草率)方法是检查它是否是“真实的”,
var blah;
blah = "foo"; // in real code, this assignment might happen only sometimes
if(blah) {
console.log('blah is set');
}
我原以为“宽松”的平等算子等同于真正的测试。然后,结果表达式"foo" == true
评估为false
?
答案 0 :(得分:1)
if( expression )
使用转换确定相等性时, x == y
会检查是否真实。它的概念并不完全相同。
转化详情请见MDN。对于==
:
如果两个操作数的类型不同,则JavaScript会转换 操作数,然后应用严格的比较。如果任一操作数是a 如果是数字或布尔值,操作数将转换为数字 可能;否则,如果任一操作数是字符串,则字符串操作数为 如果可能,转换为数字。如果两个操作数都是对象,那么 JavaScript比较操作数时相同的内部引用 在内存中引用相同的对象。
基于此,"foo" == true
相当于NaN === 1
并且为假。