如何在javascript中为变量设置一行setter?

时间:2015-02-06 17:09:52

标签: javascript

我希望能够做到以下几点:

假设我有3个变量:

  • var a1;
  • var a2;
  • var x;

我希望能够设置“x”:

    如果不是a1 ,则
  • 等于null 如果a2不是a1
  • ,则
  • 等于null 如果a1 a1和a2都已定义,则
  • 等于a2
  • 如果a1a2都是null ,则
  • 等于null

我可以使用一行javascript吗?

目前我这样做:

var x;

if (a2) {
 x = a2;
}

if (a1) {
 x = a1;
}

3 个答案:

答案 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)