JavaScript中==和===运算符的确切行为

时间:2011-11-04 07:30:57

标签: javascript

在编写简单的代码片段以便在JavaScript中进行比较时,我发现了一些奇怪的行为。

案例1:

typeof(window.WHTStatement.DDL_TPTypeID.size()) ==> "number"
typeof(window.WHTStatement.Txt_TPTypeValue.size()) ==> "number"

window.WHTStatement.DDL_TPTypeID.size() == 1 == window.WHTStatement.Txt_TPTypeValue.size()

返回true - 确定


案例2:

window.WHTStatement.DDL_TPTypeID.size() === 1 == window.WHTStatement.Txt_TPTypeValue.size()

返回true - 确定


案例3:

window.WHTStatement.DDL_TPTypeID.size() === 1 === window.WHTStatement.Txt_TPTypeValue.size()

返回false,为什么?

案例3中究竟发生了什么。有人可以详细说明吗?

1 个答案:

答案 0 :(得分:4)

与Python不同,JS x == y == z不等于x == y && y == z而是(x == y) == z。因此,您实际上将布尔值与在类型检查中明显失败的数字进行比较。

==比较有效,因为1 == truetrue