我希望能够做到以下几点:
假设我有3个变量:
var a1;
var a2;
var x;
我希望能够设置"x":
- 如果不是
null
,则等于a1
- 如果
a1
不是null
,则等于a2
- 如果定义了
a2
a1和a2,则等于a1
- 如果
a1
和a2
都是null
,则等于null
有没有一行javascript可以让我做到这一点?
目前我做:
var x;
if (a2) {
x = a2;
}
if (a1) {
x = a1;
}
假设您只关心值是否为false而不是与null
相同,则使用||
:
var x = a1 || a2 || null;
在任何受C影响的语言中,"and"one_answers"or"运算符都会短路。结合Javascript的真实性概念,这是一个强大的功能。使用它。
您可以使用三元表达式。这将允许您传递一个条件,而不是默认为undefined
/null
检查。这是一种短路情况。
就像C#和Java一样,表达式只会被求值如果,并且只有当,该表达式才是给定条件的匹配表达式;则不会对另一个表达式进行求值[2]
var x = a1 != null ? a1 : a2 != null ? a2 : null;
尽管?
和:
的用法看起来像Elvis运算符(?:
),但在JavaScript中,您可以使用||
(OR逻辑运算符)为默认值执行null
合并。
var x = a1 || a2 || null;
使用?
运算符
var x; x = a1 ? a1 : (a2 ? a2: null)