Javascript:获取2个或更多未声明变量中的任何一个的值

时间:2017-02-19 14:39:58

标签: javascript

我有2个变量AB。其中一个将是 未声明 ,而另一个将具有值。而不是使用if语句,是否有一种更优雅的方式来将它们两者等同起来只形成一个变量?像这样:

if(A) {
    X = A
} else if(B) {
    X = B
}

两个if语句可能是一个相对较小的代码,但考虑到我将来最终可能会有超过2个这样的变量 - 当然还有更好的方法可以做到这一点吗?

非常感谢您提供的任何帮助!

编辑:对不起我的意思是他们中的一个将是未申报的。如果我执行X = A || B之类的操作,我会收到未被引用的引用错误

6 个答案:

答案 0 :(得分:3)

您可以使用||运算符:

X = A || B

简而言之,expr1 || expr2 || expr3 | ...返回可以转换为true的第一个表达式

答案 1 :(得分:3)

如果您确实想要找到不是// Defines a property named textualDescription of type String var textualDescription: String { // Calls textualDescription on every element of the array // and adds the return values to a new array itemsAsText let itemsAsText = self.map { $0.textualDescription } // Creates a string starting with "[" followed by // all the elements in itemsAsText, separated by ",", // and a "]". Then, returns that String return "[" + itemsAsText.joined(separator: ", ") + "]" } 的第一个值,那么您需要检查值是否未定义。值undefined不是0,但如果undefinedif (A)时使用A,则会跳过0语句的正文。

这是一种选择第一个非未定义值的简洁方法:

if

或者,如果您正在编写可以使用箭头功能的环境:

var myValue = [A, B, C, D].find(function (val) {
    return typeof val !== 'undefined';
});

答案 2 :(得分:1)

您可以使用三元运算符:

X = A ? A : B;

或多个变量:

X = [A, B, C, D].find(x => x);

答案 3 :(得分:0)

试试这个。

var X = (A) ? A : B;

答案 4 :(得分:0)

你可以这样做:

X = A && A || B && B;

X = A ? A : B;

答案 5 :(得分:0)

使用三元运算符......

var A = null;
var B = 'This Has a Value';   
var OneVar = (A === null ? B : A);

console.log('OneVar: ' + OneVar);

控制台结果:OneVar:具有值