在查看来自各种Firefox扩展的JavaScript时,我看到了类似以下的代码来创建别名(example):
let Cc = Components.classes;
let Ci = Components.interfaces;
let Cu = Components.utils;
这对我有意义。但是,我看到了这个代码的奇怪外观,看起来像这样(from this example):
let { classes: Cc, interfaces: Ci, utils: Cu } = Components;
我不完全理解这个赋值语句。我相信最终结果与前一代码块基本相同,但为什么呢?正在为匿名对象分配值Components
,对吗?我以前从未见过像这样的作业类型,所以对我来说没什么意义。
我查看了MDN上的Values, variables, and literals页面和let的文档,但是这两个页面都没有任何此类构造的示例。
答案 0 :(得分:1)
第二种形式是ECMAScript6的一个新特性,称为解构赋值。由于缺乏支持,你不会在开放的网络中看到它,但你可以在node.js或firefox / addon内部运行的一些代码中找到它。 或者通过es6到es5转换器运行的东西。
有关详细信息,请参阅MDN docs。