我的目标是“仅在 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=b或b=c..)
我的问题是:“代码#1 和代码#2 之间有什么区别?”
您实际上要问的问题是这两个是否相同:
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)
| 归档时间: |
|
| 查看次数: |
2379 次 |
| 最近记录: |