Javascript 速记 - '||' 是啥意思运算符在作业中使用时的意思? [复制]
Posted
技术标签:
【中文标题】Javascript 速记 - \'||\' 是啥意思运算符在作业中使用时的意思? [复制]【英文标题】:Javascript Shorthand - What Does the '||' Operator Mean When Used in an Assignment? [duplicate]Javascript 速记 - '||' 是什么意思运算符在作业中使用时的意思? [复制] 【发布时间】:2011-05-29 12:27:23 【问题描述】:我刚刚看了this answer,我注意到下面这行javascript代码:
hrs = (hrs - 12) || 12;
我的问题:
'||' 是什么意思运算符的意思是什么时候 在作业中使用?
【问题讨论】:
【参考方案1】:在这种情况下,如果 hrs-12 = 0(如 JavaScript 所见,0 = false),则代码将 12 分配给 hrs。
更一般地说,如果前一个值的计算结果为 0、空字符串、null、未定义等,它将后一个值分配给变量。
【讨论】:
更具体地说,如果 hrs12 @Casey: 不是这样,负数上的 ToBoolean 会导致 true,所以实际上它只会将 12 分配给hrs
如果 @987654322 @正如答案所说。
@Casey:如果hrs - 12 == 0
(或其他一些虚假值),它只会是12
。如果小于0
,则认为是“真”,hrs
将被赋予负值。【参考方案2】:
总是相同的意思:逻辑或
这是使用类型转换的常见技巧。许多非布尔表达式的计算结果为假。和这个是一样的:
hrs = (hrs-12)
if(!hrs)
hrs = 12;
if() 有效,因为 0 强制转换为 false。它也用于处理未定义的变量:
function foo(optionalValue)
var data = optionalValue || "Default value";
foo();
foo("My value");
【讨论】:
【参考方案3】:如果hrs-12
评估为0
,则此人希望将hrs
分配给12
,因为0
不合适。
由于 0
的计算结果为 false,因此表达式变为 false || 12
,在这种情况下,将选择 12
,因为它是真实的。
【讨论】:
【参考方案4】:意思是“如果表达式的前半部分为假,则使用后半部分。”
实际上,在本例中,这意味着hrs
将设置为hours-12
,除非hours-12
为零,在这种情况下hrs
将设置为12
。
【讨论】:
【参考方案5】:意思是"short circuit or"。 IE。如果表达式的第一部分为假,则使用第二部分。***对此有 an article 以及多种语言的语法。
【讨论】:
【参考方案6】:这意味着如果 hrs - 12 被评估为 false (false, null, undefined, NaN, '', 0),那么 12 将被分配给 hrs。
【讨论】:
以上是关于Javascript 速记 - '||' 是啥意思运算符在作业中使用时的意思? [复制]的主要内容,如果未能解决你的问题,请参考以下文章