JavaScript 示例中的奇怪语法:`var { variable } = value`

Weird syntax in JavaScript example: `var { variable } = value`

有谁知道这个语法在 JavaScript 中是什么意思?

var { variable } = value;

我在一些代码示例中发现了它,但我以前从未见过。这是JavaScript6吗?我尝试使用谷歌搜索 variable syntaxes6,但没有使用此语法的示例。

完整示例如下:

var { Tab } = require('app-dev-kit/tab');
var tab = Tab({ properties });

最奇怪的部分是,如果我从 { Tab } 中删除括号,那么它就不起作用(它说 Tab 在这种情况下不是函数):

var Tab = require('app-dev-kit/tab');
var tab = Tab({ properties });

这不起作用:Error: Tab is not a function

这是一个称为 destructuring assignment 的 ES6 特性,适用于数组(数组解构)和对象(对象解构)

The destructuring assignment syntax is a JavaScript expression that makes it possible to extract data from arrays or objects using a syntax that mirrors the construction of array and object literals.

假设你有一个函数

function foo() {
    return { bar: 1, baz: 2 };
}

并且您想将函数返回值的属性分配给局部变量。传统上,您会做类似

var f = foo();
var bar = f.bar; 
var baz = f.baz;
console.log(bar); // 1
console.log(baz); // 2

通过解构赋值,你可以做到这一点

var {bar, baz} = foo();
console.log(bar); // 1
console.log(baz); // 2