ES6的箭头函数 ( => )
var f = v => v;
//上面的箭头函数等同于:
var f = function(v) {
return v;
};
如果箭头函数不需要参数或需要多个参数,就使用一个圆括号代表参数部分。
var f = () => 5;
// 等同于
var f = function () { return 5 };
var sum = (num1, num2) => num1 + num2;
// 等同于
var sum = function(num1, num2) {
return num1 + num2;
};
如果箭头函数的代码块部分多于一条语句,就要使用大括号将它们括起来,并且使用 return 语句返回。
var sum = (num1, num2) => { return num1 + num2; }
由于大括号被解释为代码块,所以如果箭头函数直接返回一个对象,必须在对象外面加上括号,否则会报错。
// 报错
let getTempItem = id => { id: id, name: "Temp" };
// 不报错
let getTempItem = id => ({ id: id, name: "Temp" });
如果箭头函数只有一行语句,且不需要返回值,可以采用下面的写法,就不用写大括号了。
let fn = () => void doesNotReturn();
箭头函数使得表达更加简洁。
const isEven = n => n % 2 == 0;
const square = n => n * n;
以上摘自阮一峰的《ES6标准入门一书》,下面再来一个具体例子:
export default connect ( state =>({ items : state.items, selectedItems :state.selectedItems }), dispatch => ({ actions: bindActionCreators(ItemsActions, dispatch)}))(App)
上面这段代码虽然简洁,但咋一看上去不好理解,等同于如下的形式
let data = function getData(state){ return { items : state.items, selectedItems :state.selectedItems } } let action = function getAction(dispatch){ return {actions: bindActionCreators(ItemsActions, dispatch)} } export default connect ( data , action)(App)