人们经常写这个来指定默认值:
var thing = this || that;
,即AFAIK,与此相同:
var thing = !!this ? this : that;
您如何称呼用于在第一个代码块中指定默认值的技术?
注意:我不是在问什么是逻辑OR。我问的是什么替代三元符号(如第一个代码块中所写)被调用。
答案 0 :(得分:4)
我打电话给:
var a = A || B;
条件分配,因为它是有效的:
if (!!A) {
a = A;
} else {
a = B;
}
var a = A? A : B;
它也可能被称为“逻辑分配”,因为它涉及逻辑OR表达式,但它似乎不适合它正在做的事情。
答案 1 :(得分:1)
如其他地方所述,这是一个合乎逻辑的OR。
有问题的评估是short-circuit evaluation。
这样看起来可能会有所帮助:
if ((foo = bar)) {
} else {
foo = baz;
}
if
语句的计算结果为bar
。如果bar为false,则为null,则评估将为false。
编辑:注意:
评估作业完全有效。如果我们说:
if ((a = b)) { ...
请注意,它不是:
if (a === b) { ...
对分配结果进行评估。在这里,它将评估为真if (b)
。
如果一个人喜欢它这是公平的,(我很习惯从C开始),但在这种情况下,它仅仅是为了回答问题。
以同样的方式:
if ((foo = foo)) {
} else {
foo = baz;
}
var x = false;
console.log((x = x)); // False
因此我们可以说:
(x = x) || (x = y)
简而言之:
x = (x || y);
或更短:
x = x || y;
答案 2 :(得分:-1)
双管称为'或'运算符。
答案 3 :(得分:-1)
双重管道是JavaScript中的Logical OR operator。
如果该技术有一个名称,我猜它将是“(ab)使用逻辑OR运算符的短路”