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 速记 - '||' 是啥意思运算符在作业中使用时的意思? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

“+=”(加号)是啥意思?

JavaScript 速记三元运算符

是啥? JavaScript 中的语法是啥意思?

Javascript 中的“”是啥意思? [关闭]

JavaScript:“!!”是啥意思? [复制]

javascript: /*@ @*/ 是啥意思?