箭头函数属于es6。箭头函数是ES6中引入的新特性,使用箭头“=>”定义函数,例“var f = v => v;”,等价于“var f = function (v) {return v;};”;如果箭头函数不需要参数或需要多个参数,就使用一个圆括号代表参数部分,例“var f = () => 5;”。
本教程操作环境:windows7系统、ECMAScript 6版、Dell G3电脑。
箭头函数
箭头函数是ES6中引入的新特性,使用“箭头”(=>)定义函数。由于其简洁的语法和对this关键字的处理,箭头函数迅速成为开发者们最喜爱的功能。
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 foo = () => { a: 1 }; foo() // undefined
登录后复制
上面代码中,原始意图是返回一个对象{ a: 1 },但是由于引擎认为大括号是代码块,所以执行了一行语句a: 1。这时,a可以被解释为语句的标签,因此实际执行的语句是1;,然后函数就结束了,没有返回值。
如果箭头函数只有一行语句,且不需要返回值,可以采用下面的写法,就不用写大括号了。
let fn = () => void doesNotReturn();
登录后复制
说明:
箭头函数是函数式编程的一种体现,函数式编程将