if (!away) {
return self.data.a1;
}
else {
return self.data.a2;
}
我在self.data的if和else语句中都未定义
答案 0 :(得分:1)
这就是你想要的
String
或者只是将你的try / catch包装起来并在本地处理异常。
答案 1 :(得分:0)
这里是你如何检查它们是否被定义
if (!away) {
if(typeof self !== 'undefined' &&
typeof self.data !== 'undefined' &&
typeof self.data.a1 !== 'undefined')
return self.data.a1;
} else {
if(typeof self !== 'undefined' &&
typeof self.data !== 'undefined' &&
typeof self.data.a2 !== 'undefined')
return self.data.a2;
}
答案 2 :(得分:0)
只有在return
语句包含在函数范围内时才会起作用,例如:
var away = false;
var self = {
data: {
a1: 'hi',
a2: 'ho'
}
};
var a = function(){
console.log(self, self.data);
if (!away) {
return self.data.a1;
} else {
return self.data.a2;
}
};
console.log(a()); // returns 'hi
但如果这对您来说显而易见并且这不是您遇到的问题,那么是的,或许console.log
self.data
将有助于诊断问题。
答案 3 :(得分:0)
检查的最佳方法是:
if(typeof(self.data.a1) != "undefined"){ /* do whatever shall be done in this case */ }
我希望这会有所帮助。
答案 4 :(得分:0)
你可以在一行上写if条件,在你的控制台中试试:
var self = {'data': { 'a1': 'a1' } };
console.log((!away && self.data) && (self.data.a1 || self.data.a2))
self.data.a2 = 'a2';
self.data.a1 = null;
console.log((!away && self.data) && (self.data.a1 || self.data.a2))
记录a1和a2。