Answers:
析构分配语法是一个JavaScript表达式,它可以使用与数组和对象文字相同的语法来从数组或对象中提取数据。
资料来源: 关于MDN的销毁分配参考
var o = {p: 42, q: true};
var {p, q} = o;
console.log(p); // 42
console.log(q); // true
// Assign new variable names
var {p: foo, q: bar} = o;
console.log(foo); // 42
console.log(bar); // true
var foo = ["one", "two", "three"];
// without destructuring
var one = foo[0];
var two = foo[1];
var three = foo[2];
// with destructuring
var [one, two, three] = foo;
var {newVarName: oldVarName} = varSource;
看起来很像{ newVarName: varSource.oldVarName }
或scope.newVarName = varSource.oldVarName;
,但是显然很不对。将旧名称/旧名称放在左侧,是否有实际原因:
?
var { Navigation } = require('react-router');
...使用解构来实现与...相同的功能
var Navigation = require('react-router').Navigation;
...但是更具可读性。
这是ES6中用于分解对象的新功能。
众所周知,这里正在进行赋值操作,这意味着右侧值已分配给左侧变量。
var { Navigation } = require('react-router');
在这种情况下,require('react-router')
方法返回具有键值对的对象,例如
{ Navigation: function a(){},
Example1: function b(){},
Example2: function c(){}
}
。
如果我们想在返回的对象中使用一个键,Navigation
对一个变量说,我们可以为此使用对象销毁。
仅当我们拥有钥匙时,这才有可能。
因此,在赋值语句之后,局部变量Navigation
将包含function a(){}
另一个示例如下所示。
var { p, q } = { p: 1, q:2, r:3, s:4 };
console.log(p) //1;
console.log(q) //2;
webpack.config.js
您可能已启用jsx-loader
了harmony
标记