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

时间:2010-12-22 16:30:34

标签: javascript

我刚刚看了this answer,我注意到以下一行javascript代码:

hrs = (hrs - 12) || 12;

我的问题:

  

'||'是什么算子意味着何时   用于作业?

6 个答案:

答案 0 :(得分:12)

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

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

答案 1 :(得分:7)

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

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

hrs = (hrs-12)
if(!hrs){
    hrs = 12;
}

if()有效,因为0强制转换为false。它还用于处理未定义的变量:

function foo(optionalValue){
    var data = optionalValue || "Default value";
}
foo();
foo("My value");

答案 2 :(得分:3)

如果hrs-12评估为0,则该人希望hrs被分配12,因为0不合适。

由于0的计算结果为false,因此表达式变为false || 12,在这种情况下,12将被选中,因为它是真实的。

答案 3 :(得分:2)

这意味着“如果表达式的前半部分为假,则使用后半部分。”

实际上,在此示例中,这意味着hrs将设置为hours-12,除非hours-12为零,在这种情况下,hrs将设置为12 {1}}。

答案 4 :(得分:1)

这意味着"short circuit or"。即如果表达式的第一部分为假,则使用第二部分。维基百科在an article上有许多语言的语法。

答案 5 :(得分:1)

这意味着如果将hrs - 12评估为false(false,null,undefined,NaN,'',0),则将12分配给hrs。