如何在if和else语句中进行空检查

时间:2015-08-04 06:06:39

标签: javascript

if (!away) {
   return self.data.a1;
}
else {
   return self.data.a2;
}

我在self.data的if和else语句中都未定义

5 个答案:

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