从undefined解构时避免错误

时间:2017-07-03 13:18:13

标签: javascript babel destructuring

假设我有这段代码:

const {x, y} = point;

Babel会把它变成:

var _point = point,
    x = _point.x,
    y = _point.y;

哪个好,但如果点未定义怎么办?现在我收到一个错误:

"Cannot read property 'x' of undefined"

那么我该如何避免这种情况呢?

我想做点什么

const {x, y} = {} = point;

但这是语法错误。

我只能看到这是一个选项:

const {x, y} = point || {};

哪个babel转向:

var _ref = point || {},
    x = _ref.x,
    y = _ref.y;

我们在这里创建一个对象只是为了避免未定义的错误。这似乎很浪费。

我是否缺少一些可以避免这种情况的语法?可能会发生类似这样的事情:

var x, y;
if (typeof point !== 'undefined') {
    x = point.x;
    y = point.y;
}

2 个答案:

答案 0 :(得分:0)

  

[...]如果点未定义怎么办?现在我收到一个错误:“无法读取未定义的属性'x'”

     

那么我该如何避免这种情况呢?

如果要编写清晰的代码,可以明确检查该条件:

mapStateToProps

答案 1 :(得分:0)

要处理ES6对象分解中的未定义错误,可以执行以下操作

const {x, y} = {...point};
console.log(x)      // undefined                  
console.log(y)      // undefined