为什么javascript松散相等与truthy测试不同?

为什么javascript松散相等与truthy测试不同?,javascript,Javascript,在javascript中,检查变量是否被设置的一种(当然是草率的)方法是通过 我原以为“松散”相等运算符相当于一个真实的测试。那么,表达式“foo”==true的计算结果是false?如果(表达式)检查真实性,而x==y使用转换来确定相等性。这不是完全相同的概念 有关转换的详细信息,请参见。对于==: 如果两个操作数的类型不同,JavaScript将转换 然后应用严格比较。如果任一操作数为 如果是数字或布尔值,则操作数将转换为数字 可能的否则,如果任一操作数为字符串,则字符串操作数为 如果可能,

在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'); 
}