1

不确定这是可行的,但我正在寻找一个真实的回报,例如.. var A = 100; 变量 B = 100;

(A == B == 100) 

我认为这将返回 true。因为 A == B(它们都是 100),因此它们都等于 100。

但它总是假的。

编辑::: 谢谢,是的 - 我很感激回复.. 我希望有一些比做 (A === 100) && ( B === 100) 等更漂亮的速记......但是非常感谢。

4

5 回答 5

13

要么它评估为

(A == B) == 100

或作为

A == (B == 100)

在这两种情况下,您都将布尔值与 100 进行比较。这当然总是错误的。你要

(A==100) && (B==100)

要查看发生了什么,您可能需要将下面的示例作为 JSFiddle 运行:

var A = 100;
var B = 100;

alert("B == 100: " + (B == 100));
alert("A == (B == 100):" + (A == (B == 100)));
alert("A == B:" + (A == B));
alert("(A == B) == 100:" + ((A == B) == 100));
alert("A == B == 100):" + (A == B == 100));
alert("(A == 100) && (B == 100):" + ((A == 100) && (B == 100)));
于 2013-02-18T06:51:50.203 回答
2
A== 100 && B == 100

是你正在寻找的。

于 2013-02-18T06:51:59.650 回答
2

它转换true===100为显然是false。您可以使用a===b && b===100

于 2013-02-18T06:52:55.810 回答
1

因为第二个表达式之后是它(B == 100)的值,所以它总是会被A比较booleanfalse

那是:

A == (B == 100)

变成

A == true

哪个评价为false

所以正确的版本应该是:

(A == 100) && (B == 100)

现场演示

于 2013-02-18T07:08:19.200 回答
0

我认为它可以解释为

(A == B) && ((A == B) == 100) 

显然,这不是真的

于 2013-02-18T06:57:03.770 回答