【发布时间】:2015-05-07 17:59:25
【问题描述】:
我正在查看here的这些代码行:
if (callback)
callback(sig || graph);
我从未在 javascript 方法调用中看到垂直的“或”条。他们的意思是什么?他们是否传递“真实”参数(即 sig 或图形)?他们是否传递了定义的参数?我以前从未见过这种语法。
【问题讨论】:
标签: javascript
我正在查看here的这些代码行:
if (callback)
callback(sig || graph);
我从未在 javascript 方法调用中看到垂直的“或”条。他们的意思是什么?他们是否传递“真实”参数(即 sig 或图形)?他们是否传递了定义的参数?我以前从未见过这种语法。
【问题讨论】:
标签: javascript
这是 JS(和大多数其他语言)中的逻辑 OR 运算符。它是defined in the spec at 11.11。如规范中所述,将首先评估任一侧的表达式,逻辑 OR 为left-to-right associative。请注意,操作数的评估遵循标准ToBoolean semantics from section 9.2,因此[null, undefined, 0, ''] 都算作假。
与大多数语言不同,JS 如果为真则返回左操作数,否则返回右操作数。这种行为has been covered before 在许多 SO 问题中,但值得注意的是,因为大多数语言只是返回 true 或 false。此行为通常用于 provide default values 以其他方式未定义的变量。
【讨论】:
false;它返回右侧的值,无论它可能是什么(所以,0 可能,或"")。
false 或 nil到另一个值,而不是来自任意“虚假”对象,如 0 值、空序列等)。
Logical OR operator (||) 是一个运算符,它返回其第一个或第二个操作数,具体取决于第一个操作数是否为真。 “真实”值表示除 0、undefined、null、"" 或 false 之外的任何值。
此运算符使用短路,这意味着如果第一个表达式为真,则不计算第二个表达式并立即返回第一个操作数。这类似于Logical AND operator (&&),它的作用相反:如果第一个操作数为假,则返回它,否则返回第二个表达式。
【讨论】:
意思是'或' (http://www.w3schools.com/js/js_comparisons.asp) 所以如果(sig OR graph)
小心您可以使用它“短路”您的代码。 示例:
If (foo || foo2)
如果 foo 为真,那么 JavaScript 甚至根本不会测试 foo2,它只是跳过它。
【讨论】:
它通过任何一个计算结果为真,或者sig如果两者都为真。
【讨论】:
双管道(||)在JS中代表OR。简而言之,这个或那个是True。它需要任何一方为真才能获得True 结果。
例如:
变量 x = 8;
var y = 'c';
x >= 8 || y === 'a'
双管道的左侧返回True,右侧是False。因此,结果是True。
【讨论】:
运算符 ||表示或。
如果 sig 或 graph 为真或非空变量,回调函数将接收一个真参数。
【讨论】: