箭头函数
跳转到“箭头函数”ES6标准新增了一种新的函数:箭头函数(Arrow Function)。
x => x * x
// 上面的箭头函数相当于:function (x) { return x * x;}| 用法分类 | 说明 | 代码示例 |
|---|---|---|
| 基本语法 | 使用箭头=>定义函数,当函数体只有一条语句时,可以省略{}和return。 | let square = x => x * x; |
| 多表达式 | 当函数体有多条语句时,需要使用{}包裹,并且需要显式使用return返回值。 | let getSign = x => { if (x > 0) return '正数'; return '非正数'; }; |
| 多参数 | 当箭头函数接受多个参数时,需要使用圆括号()包裹参数列表。 | let sum = (x, y) => x + y; |
| 无参数 | 当箭头函数不接受任何参数时,需要使用一对空的圆括号()。 | let sayHello = () => console.log('Hello!'); |
| 可变参数 | 使用ES6的rest参数语法,可以接受任意数量的参数。 | let sumAll = (...nums) => nums.reduce((acc, num) => acc + num, 0); |
| 对象字面量 | 当要返回一个对象字面量时,需要使用括号()包裹返回的对象,以避免语法错误。 | let getPerson = id => ({ id, name: 'John Doe' }); |
| this 词法作用域 | 箭头函数没有自己的this,它会捕获其所在上下文的this值,作为自己的this。 | let obj = { greet: () => console.log(this === obj) }; obj.greet(); // true |
| 不可绑定this | 箭头函数不能使用call或apply方法来改变this的值。 | let fn = () => this; fn.call({}); // 指向原始上下文 |