我之前没有见过这种语法,想知道它是关于什么的。
var { Navigation } = require('react-router');
左侧的括号引发了语法错误:
意外的标记 {
我不确定webpack配置的哪一部分正在转换或语法的目的是什么。这是Harmony的事情吗?有人可以启发我吗?
我之前没有见过这种语法,想知道它是关于什么的。
var { Navigation } = require('react-router');
左侧的括号引发了语法错误:
意外的标记 {
我不确定webpack配置的哪一部分正在转换或语法的目的是什么。这是Harmony的事情吗?有人可以启发我吗?
解构赋值语法是JavaScript表达式的一种,它使得我们能够使用类似于数组和对象字面量构造的语法从数组或对象中提取数据。
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;
,但这些显然是错误的。在 :
的左边放旧名称有实际原因吗? - ruffinPropertyName [ ":" Alias ]
。 - Uber Kluger这是解构赋值。它是 ECMAScript 2015 的一个新特性。
var {
AppRegistry,
StyleSheet,
Text,
View,
} = React;
等同于:
var AppRegistry = React.AppRegistry;
var StyleSheet = React.StyleSheet;
var Text = React.Text;
var View = React.View;
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;
替代
const salary = personnel.salary
const sex = personnel.sex
const age = personnel.age
简单地说
const {salary, age, sex} = personnel
webpack.config.js
文件中,你可能启用了jsx-loader
的harmony
标志。 - Paolo Moretti