Javascript 使用 && 运算符而不是 if 条件

use*_*430 6 javascript

拥有这样的逻辑运算符有什么意义:r == 0 && (r = i);?

function do()
{
    var r = 0;
    var i = 10;
    r == 0 && (r = i);
}
Run Code Online (Sandbox Code Playgroud)

这是否与:

 if (r==0)
 {
     r=i;
 }
Run Code Online (Sandbox Code Playgroud)

Tsc*_*cka 7

总是对我有帮助的是将其翻译成文字

  1. var r = 0;
  2. var i = 10;
  3. r == 0 && (r = i);

翻译为

  1. 将变量 r 设置为零
  2. 将变量 i 设置为 10
  3. 如果变量 r 等于 0 并且返回以下语句“将变量 r 设置为变量 i 的值”
  4. 什么都不做,但 r 现在是 10。

简而言之,让我们忘记 1 和 2。

在 javascript 中,布尔比较中的执行流程是,如果 && 中的任何部分失败,则停止执行 if 语句参数。

布尔比较将从左到右执行。

1 == 1 && 2 == 3 && (r = i)
Run Code Online (Sandbox Code Playgroud)

它将传递1 == 1失败2 == 3并且永远不会到达分配操作。

基本上它是以下内容的简写:

if(r == 0) {
   r = i;
}
Run Code Online (Sandbox Code Playgroud)