在 JS 中, (a===b===c) 和 ( (a===b)&&(a===c)&&(b===c) ) 是一样的吗?//抱歉我的无知

NER*_*ARD 2 javascript

我的目标是“仅在 a、b 和 c 相等时执行代码”。我想出了两个代码:

代码#1:

if (a===b===c) {console.log('something')};
Run Code Online (Sandbox Code Playgroud)

代码#2:

if ( (a===b)&&(a===c)&&(b===c) ) {console.log('something')};
Run Code Online (Sandbox Code Playgroud)

我已经尝试过两者并意识到只有“code#2”能够响应我的目的(仅当 3 个变量等效时才执行(例如a=b=c),但是对于“code#1”,只要有 2 个等效变量(例如.a=bb=c..)

我的问题是:“代码#1 和代码#2 之间有什么区别?”

Nit*_*Nit 6

您实际上要问的问题是这两个是否相同:

if (a === b === c) {...}
if ((a === b) && (b === c) && (a === c)) {...}
Run Code Online (Sandbox Code Playgroud)

很快,他们不是。第一个可以概括为:

if ((a === b) === c) {...}
Run Code Online (Sandbox Code Playgroud)

其中,如果 a 和 b 相等,则计算为

if (true === c) {...}
Run Code Online (Sandbox Code Playgroud)

这与检查三者是否相等不同。
要检查三向相等,您必须手动检查所有边:

if ((a === b) && (b === c)) {...}  
Run Code Online (Sandbox Code Playgroud)

  • 注意 `===` 是可传递的,所以 `(a === b) && (b === c)` 就足够了 (2认同)