为什么一个对象使用相等运算符返回false
和true
false
,但是当没有使用运算符时返回true
?
var test = {
one: "1",
two: "2"
};
if (test) console.log("if"); // true
if (test == true) console.log("true"); // false
if (test == false) console.log("false"); // false
答案 0 :(得分:3)
if(test)
返回true,因为如果test
对象已定义/存在,则此条件将返回true。如果test
为undefined
或NAN
或null
或false
或""
,则会返回false。
其余的比较是自我解释的,因为这是
if (test == true)
将返回false,因为test
不是可以与true
进行比较的bool值。而不是这个你可以尝试这种比较
if (test["one"] == "1")
console.log("true")
<强> Js FIddle Demo 强>
答案 1 :(得分:1)
if (test) console.log("if");
返回true,因为它正在检查对象是否存在/已定义。
if (test == true) console.log("true"); // false
if (test == false) console.log("false"); // false
返回false,因为test不是 Boolean ,因此无法与true或false进行比较。所以它总是 false 。
答案 2 :(得分:0)
使用==
时,存在类型转换规则。
因此true
和false
转换为1
和0
。
test.toString()
返回字符串"[object Object]"
,该字符串不等于0
或1
。