我以前没有看过这种语法,我想知道它的全部内容.
var { Navigation } = require('react-router');
Run Code Online (Sandbox Code Playgroud)
左侧的括号抛出语法错误:
意外的标记 {
我不确定webpack配置的哪个部分正在转换或者语法的目的是什么.这是和谐的事吗?有人可以开导我吗?
谈话很便宜;给我看代码。
// equals to this.test = "inside window"
var test = "inside window";
function f () {
console.log(this.test)
};
var a = {
test: "inside object",
fn: f
};
a.fn(); // "inside object" --> fine
(a).fn(); // "inside object" --> fine
(1, a).fn(); // "inside object" --> fine
(a.fn)(); // "inside object" --> fine
(1, a.fn)(); // "inside window" --> why?
// reference equality check
console.log(
f === a.fn &&
(a.fn) === f &&
f === (1, a.fn)
); // …Run Code Online (Sandbox Code Playgroud)我正在编写自己的 ES6 解析器。但我不明白 ObjectLiteral 中的 CoverInitializedName 是什么。
在ECMA-2015 ObjectLiteral 规范中关于此的部分中,我看到
PropertyDefinition[Yield] :
IdentifierReference[?Yield]
CoverInitializedName[?Yield] <-- this is what I dont understand
PropertyName[?Yield] : AssignmentExpression[In, ?Yield]
MethodDefinition[?Yield]
Run Code Online (Sandbox Code Playgroud)
然后我查找 CoverInitializedName 的定义。
CoverInitializedName[Yield] :
IdentifierReference[?Yield] Initializer[In, ?Yield]
IdentifierReference[Yield] :
Identifier
[~Yield] yield
Initializer[In, Yield] :
= AssignmentExpression[?In, ?Yield]
Run Code Online (Sandbox Code Playgroud)
初始值设定项以 = 符号开头。
这意味着我可以使用这样的赋值运算符来分配属性。
let o = { prop = value };
Run Code Online (Sandbox Code Playgroud)
如果我执行此代码,它将抛出 SyntaxError: Invalid shorthand property initializer
我感到困惑并查看了MDN 对象初始值设定项文档。 哪有这回事。那么这个 CoverInitializedName 是什么?
[编辑]
loganfsmyth的回答是
({ prop = value } = …Run Code Online (Sandbox Code Playgroud)