这样的逻辑运算符有什么意义:r == 0 && (r = i);
?
function do()
{
var r = 0;
var i = 10;
r == 0 && (r = i);
}
与以下内容相同:
if (r==0)
{
r=i;
}
答案 0 :(得分:1)
以这种方式缩短代码看起来像code golf。来自SO系列的页面为Programming Puzzles & Code Golf 。
对于更短的代码,您可以使用逻辑OR作为默认运算符。
r = r || i;
或
r || (r = i);
答案 1 :(得分:1)
总是帮助我的是将其翻译成文字
var r = 0;
var i = 10;
r == 0 && (r = i);
转换为
简而言之,让我们忘记1和2。
在javascript中,布尔比较中的执行流程是停止执行if语句参数,如果&&和/或失败。
布尔比较将从左到右执行。
1 == 1 && 2 == 3 && (r = i)
它会在1 == 1
上通过2 == 3
失败并且永远无法达到分配操作。
基本上它是:
的简写if(r == 0) {
r = i;
}
答案 2 :(得分:1)
简单是r == 0 && (r = i);
与
if (r==0)
{
r=i;
}
答案 3 :(得分:0)
它确实是相同的,并且是缩放器经常用来折叠代码的技术。在这种情况下,你甚至可以使用!为了在没有类型检查的情况下进行if比较:
!r && (r = i);
或使用||此任务的运算符:
r = r || i;
如果您想保持代码清晰,请使用if tho。
答案 4 :(得分:0)
Just tested the speed of the code和&&有点快(几乎可以忽略不计)。
来到实际问题,我找到了使用&&和而不是if
我们的字面意思是后来的简短代码。但是 I 从不使用代码,因为它严重破坏了代码阅读器的可读性。
正如docs所说
逻辑运算符通常与布尔(逻辑)值一起使用。如果是,则返回布尔值。
但我们在这里看到的是基于其他的变量赋值。当然代码有效,但我相信,这只是对惯例的错误使用。
答案 5 :(得分:-3)
考虑到只有当r = 0且i = 10时才能打印。然后&&将使用完全像。
if(r==0 && i==10){
console.log('its good practice')
}
如果我们使用单独的,例如
if(r==0){
if(i==10){
console.log('its bad practice')
}
}
如果您有很多需要检查的条件,您会怎么做?我建议你先用一个。