检查值的更好方法

时间:2017-07-09 06:06:24

标签: javascript ecmascript-6

有更优雅的方法吗?

if(response && response.body && response.body.data) {
  const users = response.body.data
  dispatch(UserActions.usersReceived(users))
}

含义response && response.body && response.body.data

3 个答案:

答案 0 :(得分:0)

Php有一个名为isset()的东西,但是Js似乎没有那个功能。这是我最近在堆栈溢出时发现的一个我最喜欢的。

user = {
  loc: {
        lat: 50,
        long: 9
  } 
}

user2 = null; 

has = function(obj, key) {
return key.split(".").every(function(x) {
    if(typeof obj != "object" || obj === null || !( x in obj)) {
        return false;          
    }
    obj = obj[x];
    return true;
});
}

console.log(has(user, 'loc.lat')); //true 
console.log(has(user, 'loc')); //true
console.log(has(user, 'loc.lat.ll')); // false
console.log(has(user2, 'd')); //false

答案 1 :(得分:0)

如果在调用其属性之前不检查对象是否存在,则可以获得异常并执行停止。因此,有人会建议尝试捕获。

但是,根据我的经验,最好以这种方式检查,明确,易于阅读和维护代码总是很好。

答案 2 :(得分:0)

没有。但如果它是REST API (看起来像是这样)我会建议使用库进行验证。当你必须执行嵌套验证时,joi是最好的。