为什么javascript松散相等与truthy测试不同?
在javascript中,检查变量是否被设置的一种(当然是草率的)方法是通过 我原以为“松散”相等运算符相当于一个真实的测试。那么,表达式为什么javascript松散相等与truthy测试不同?,javascript,Javascript,在javascript中,检查变量是否被设置的一种(当然是草率的)方法是通过 我原以为“松散”相等运算符相当于一个真实的测试。那么,表达式“foo”==true的计算结果是false?如果(表达式)检查真实性,而x==y使用转换来确定相等性。这不是完全相同的概念 有关转换的详细信息,请参见。对于==: 如果两个操作数的类型不同,JavaScript将转换 然后应用严格比较。如果任一操作数为 如果是数字或布尔值,则操作数将转换为数字 可能的否则,如果任一操作数为字符串,则字符串操作数为 如果可能,
“foo”==true
的计算结果是false
?如果(表达式)
检查真实性,而x==y
使用转换来确定相等性。这不是完全相同的概念
有关转换的详细信息,请参见。对于==
:
如果两个操作数的类型不同,JavaScript将转换
然后应用严格比较。如果任一操作数为
如果是数字或布尔值,则操作数将转换为数字
可能的否则,如果任一操作数为字符串,则字符串操作数为
如果可能,转换为数字。如果两个操作数都是对象,则
JavaScript比较操作数相同时的内部引用
引用内存中的同一对象
基于此,“foo”==true
相当于NaN==1
,为false
var blah;
blah = "foo"; // in real code, this assignment might happen only sometimes
if(blah) {
console.log('blah is set');
}