转载:ES6 语法学习 - JS 中的 lambda: 箭头函数 - 胡飞飞的学习笔记 - CSDN 博客
1. 最基本的写法
使用 => 操作符,简化匿名函数的定义
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| (param1,param2,...,paramN) => {
}
var func = () => 1;
let callback; callback = callback || function() {}; callback = callback || () => {};
callback = callback || (() => {});
|
2. 如果函数体只有一条语句,可以省略函数体的大括号
1 2 3 4 5
| (param1,param2,...,paramN) => expression
(param1,param2,...,paramN) => { return expression; }
|
3. 如果参数只有一个,可以省略参数列表的小括号
1 2 3 4 5 6 7
| (singleParam) => { statements; };
(singleParam) => { statements; };
|
4. 如果函数没有参数,参数列表的小括号不能省略
1 2 3 4
| () => { statements; };
|
5. 当返回值是对象字面量时,为了避免函数体的大括号与对象字面量的大括号冲突,必须在字面量上加一对小括号
1
| (params) => ({ foo: bar });
|
6. 使用可变参数
1 2 3
| (param1, param2, ...rest) => { statements; };
|
7. 参数默认值
默认情况下参数默认值为 undefined,可以使用 param=defaultValue 的方式指定参数的默认值。
1 2 3
| (param1 = defaultValue1, param2 = defaultValue2, paramN = defaultValueN) => { statements; };
|
8. 在参数列表中使用解构赋值
1 2 3 4 5 6 7
| var f = ([a = 5, b = 6] = [1, 2], { x: c } = { x: a + b }) => a + b + c;
f(); f([3, 4]); f([3]); f([3, 4], { x: 5 });
|
9. 对象解构赋值
1 2 3 4 5 6 7 8 9 10 11 12
| var materials = ["Hydrogen", "Helium", "Lithium", "Beryllium"];
materials.map(function (material) { return material.length; });
materials.map((material) => { return material.length; });
materials.map(({ length }) => length);
|
10. 箭头函数没有绑定 this 变量
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
function Person() { this.age = 0;
setInterval(function growUp() { this.age++; }, 1000); }
var p = new Person();
function Person() { var that = this; that.age = 0;
setInterval(function growUp() { that.age++; }, 1000); }
function Person() { this.age = 0;
setInterval( function growUp() { this.age++; }.bind(this), 1000 ); }
function Person() { this.age = 0;
setInterval(() => { this.age++; }, 1000); }
var p = new Person();
|
11. 箭头函数使用 call 和 apply 方法
1 2 3
| var func = (a, b) => a + b; func.call(null, 1, 2); func.apply(null, [1, 2]);
|
12. 箭头函数没有绑定 arguments 变量
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| var arr = () => arguments[0]; arr();
var arguments = [1, 2, 3];
var arr = () => arguments[0]; arr();
var f = (...args) => args[0] + n;
function foo(n) { var f = () => arguments[0] + n; return f(); }
foo(1);
|
13. 箭头函数作为对象的方法,注意 this 的问题
1 2 3 4 5 6 7 8 9 10 11
| var obj = { i: 10, b: () => console.log(this.i, this), c: function () { console.log(this.i, this); }, };
obj.b(); obj.c();
|
14. 箭头函数不能作为构造函数
1 2 3 4
| var Foo = () => { this.age = 18; }; var foo = new Foo();
|
15. 箭头函数没有 prototype 属性
1 2
| var Foo = () => {}; console.log(Foo.prototype);
|
————————————————
版权声明:本文为 CSDN 博主「Holmofy」的原创文章,遵循 CC 4. BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/holmofy/article/details/79554611