我有一个变量x
,可能未定义。如果是这样,我希望使用另一个我知道已定义的变量y
。如果定义了x
,则它具有属性a
。 y
始终具有属性a
。
如果定义了x.a
,我想获取值x
,否则我想获取值y.a
。
// x undefined
y = { a: 0 };
console.log( (x || y).a )
我希望在屏幕上看到0,但是我得到了RefenceError: x is not defined
。
答案 0 :(得分:2)
您可以使用三元运算符:
var z = typeof x === 'undefined' ? y.a : x.a
答案 1 :(得分:1)
x
不是undefined
,它根本不存在。要使其正常工作,只需添加var x;
,如果x
已经存在,则可以按预期工作,如果没有,则将其初始化为undefined
。
// x = { a: 1 }
var x, y = { a: 0 };
console.log( (x || y).a );
PS:实际上应该始终定义x
(尽管可能是undefined
),这才是代码中的实际问题。
答案 2 :(得分:-1)
尝试以下操作:
let result = x && x.a ? x.a : y.a
这就是说,如果定义了x.a,则将结果设置为x.a,否则将其设置为y.a