我是ECMAScript 6的新手,在尝试学习Ember时,我偶尔会看到以下代码风格:
const {
abc,
def
} = Object;
我搜索了谷歌和许多网站,解释了新的ES6规范。我知道这不是当前的实现,因为我在输入时会出现错误。
这段代码是什么意思?
更新
我将此代码段粘贴到Babel's transpiler,这就是它返回的内容:
"use strict";
var abc = Object.abc;
var def = Object.def;
我仍然对这是想要实现的目标感到困惑。
答案 0 :(得分:126)
这是ES2015 destructuring assignment。
可能有助于看到它以更冗长的方式重写。
const abc = Object.abc;
const def = Object.def;
它是一种从对象中提取属性到变量的合成简洁方法。
// you can rewrite this
const name = app.name;
const version = app.version;
const type = app.type;
// as this
const { name, version, type } = app;
浏览器供应商是still implementing ES2015规范,这可能是它无法在您的浏览器中运行的原因。
但是,有一个名为Babel的项目允许您将未来的Javascript规范转换回ES5。您可以在their REPL中试用ES2015代码。