我希望能够做到以下几点:
假设我有3个变量:
var a1;
var a2;
var x;
我希望能够设置“x”:
a1
,则null
如果a2
不是a1
null
如果a1
a1和a2都已定义,则a2
a1
和a2
都是null
,则我可以使用一行javascript吗?
目前我这样做:
var x;
if (a2) {
x = a2;
}
if (a1) {
x = a1;
}
答案 0 :(得分:4)
假设您只关心该值是否为假而不是null
,请使用||
:
var x = a1 || a2 || null;
“和”和“或”运算符在任何受C影响的语言中都会短路。结合Javascript的真实性概念,这是一个强大的功能。使用它。
答案 1 :(得分:2)
您可以使用ternary expression。这将允许您传递条件而不是默认为undefined
/ null
检查。这是一种短路情况。
就像C#和Java一样,表达式只会被评估为 ,如果且仅当 时,表达式是给定条件的匹配表达式;另一个表达式将不会被评估。 [2]
var x = a1 != null ? a1 : a2 != null ? a2 : null;
尽管?
and :
的使用类似于Elvis运算符(?:
),但在JavaScript中,您使用||
(OR logical operator)来执行null
coalescing默认值。
var x = a1 || a2 || null;
答案 2 :(得分:0)
使用?
运算符
var x; x = a1 ? a1 : (a2 ? a2: null)