使用||时意味着什么运算符来定义像
这样的变量 mouse.x = e.clientX || e.pageX;
运营商使用的是什么?
答案 0 :(得分:2)
如果第一个值为falsy,则以您显示的方式使用此运算符将var设置为第二个值。
在您的具体示例中,它是
的快捷方式if (e.clientX) mouse.x = e.clientX;
else mouse.x = e.pageX
避免两次访问e.clientX:如果未设置clientX,请使用pageX。
有关此Logical Operator from MDN的更多信息:
逻辑运算符通常与布尔(逻辑)值一起使用。如果是,则返回布尔值。然而,&&和||运算符实际上返回一个指定操作数的值,因此如果这些运算符与非布尔值一起使用,它们可能会返回非布尔值。
var e = { "clientX":25,"pageX":35 }
var res = e.clientX || e.pageX; // 25
console.log(res);
e = { "clientX":0,"pageX":35 }
res = e.clientX || e.pageX; // 35, clientX is falsy
console.log(res)
e = { "clientX":0,"pageX":0 }
res = e.clientX || e.pageX; // 0 from pageX, clientX is falsy
console.log(res)
e = { "clientX":0,"pageX":null }
res = e.clientX || e.pageX; // null from pageX, clientX is falsy
console.log(res)
答案 1 :(得分:1)
||
是逻辑OR运算符。当多个语句可以被考虑时使用它。
if (age > 18 || hasParentalSignature == true) {
// Allowed to attend
}
在Javascript中,运算符也可用作Null Coalescing Operator。它不是严格 null合并,因为它识别" falsy" null
以外的值,但它非常相似。
空合并是一个"如果值A是假的,那么使用B代替"运营商。例如:
var x = "Hello!";
var z = y || x;
在此示例中,y
变量从未定义,这意味着它是" falsy",因此将使用x
变量。
使用if语句将与:
相同var x = "Hello!";
if (y) {
var z = y;
} else {
var z = x;
}
或使用三元运算符:
var x = "Hello!";
var z = (y ? y : x);
大多数其他具有空合并运算符的语言都使用专用运算符来执行此操作。在Javascript中,无论出于何种原因,它都是OR运算符的一部分。
This question处理OR的空合并属性。