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