答案 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。