从undefined解构时避免错误

Jac*_*lan 9 javascript destructuring babel

让我说我有这个代码:

const {x, y} = point;
Run Code Online (Sandbox Code Playgroud)

巴别塔会把它变成:

var _point = point,
    x = _point.x,
    y = _point.y;
Run Code Online (Sandbox Code Playgroud)

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

"Cannot read property 'x' of undefined".

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

我想做点什么

const {x, y} = {} = point;
Run Code Online (Sandbox Code Playgroud)

但这是一个语法错误.

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

const {x, y} = point || {};
Run Code Online (Sandbox Code Playgroud)

哪个巴贝尔转向:

var _ref = point || {},
    x = _ref.x,
    y = _ref.y;
Run Code Online (Sandbox Code Playgroud)

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

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

var x, y;
if (typeof point !== 'undefined') {
    x = point.x;
    y = point.y;
}
Run Code Online (Sandbox Code Playgroud)

Car*_*los 10

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

const {x, y} = {...point};
console.log(x)      // undefined                  
console.log(y)      // undefined                  
Run Code Online (Sandbox Code Playgroud)


big*_*ose 0

\n

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

\n

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

\n
\n

如果您想编写清晰的代码,您可以显式检查该条件:

\n
let { x, y };\nif (typeof point === \'undefined\') {\n    x = y = undefined;\n} else {\n    { x, y } = point;\n}\n
Run Code Online (Sandbox Code Playgroud)\n