Javascript简写 - '||'是什么 在分配中使用时的运算符平均值?

Jim*_* G. 16 javascript

我刚刚看了一下这个答案,我注意到以下一行javascript代码:

hrs = (hrs - 12) || 12;
Run Code Online (Sandbox Code Playgroud)

我的问题:

'||'是什么 运算符在赋值时的意思?

小智 12

在这种情况下,如果hrs-12 = 0,则代码将12分配给hrs(如JavaScript所见,0 = false).

更一般地,如果前一个值的计算结果为0,则将后一个值赋给变量,空字符串,null,undefined等.

  • @Casey:不是这样,*负数上的ToBoolean*会导致*true*,所以如果答案所说,如果`hrs-12 = 0`,它实际上只会将12分配给`hrs`. (2认同)

Álv*_*lez 7

它总是意味着相同:逻辑OR

这是使用类型转换的常见技巧.许多非布尔表达式的计算结果为false.它与此相同:

hrs = (hrs-12)
if(!hrs){
    hrs = 12;
}
Run Code Online (Sandbox Code Playgroud)

并且if()起作用,因为0转换为false.它还用于处理未定义的变量:

function foo(optionalValue){
    var data = optionalValue || "Default value";
}
foo();
foo("My value");
Run Code Online (Sandbox Code Playgroud)