javascript使用属性安全而不会出错

时间:2016-11-20 15:16:24

标签: javascript

经过一段时间写javascript我总是遇到这个问题。我总是要检查变量是否存在然后只能使用它的属性否则我会收到错误。如下面的代码

if (something) {
  var data = {
    date: moment()
  };

}

var x = new F({
  param: param,
  date: data.date || null //<-- still error
})

在某些变量可以存在或不存在的情况下,我无法安全地使用date.date。我必须创建一个新变量来解决这个问题。像

if(data){ date = data.date } 但有没有更短的解决方案?

1 个答案:

答案 0 :(得分:0)

这是因为something计算结果为false时未定义变量数据。在这种情况下,当您尝试访问属性date时,您将收到引用错误。解决方案是始终将数据变量初始化为空对象:

var data = {};

if (something) {
  data.date = moment();
}

var x = new F({
  param: param,
  // now data is defined, so we can safely check if the date property exists on it:
  date: data.date || null
})

请注意,此方法仅在您将数据实际初始化为{}时才有效,以便在尝试访问非Object类型的属性时阻止TypeErrors。