ES6 的箭头函数和普通函数(传统函数)相比,有以下几个主要的不同点:
1:语法简洁:
箭头函数使用箭头(=>)来定义函数,语法更加简洁明了,省略了传统函数中的 function 关键字和大括号。
示例比较:
- // 传统函数
- function add(a, b) {
- return a + b;
- }
-
- // 箭头函数
- const add = (a, b) => a + b;
2:词法绑定的 this 值:
箭头函数没有自己的 this 值,它的 this 值继承自外部的词法作用域。这意味着在箭头函数内部,无法通过 this 访问到函数自身的上下文,而是使用外部作用域的 this 值。
示例比较:
- // 传统函数
- const obj = {
- name: 'Alice',
- sayHello: function() {
- console.log('Hello, ' + this.name);
- }
- };
-
- // 箭头函数
- const obj = {
- name: 'Alice',
- sayHello: () => {
- console.log('Hello, ' + this.name); // this.name 为 undefined
- }
- };
3:没有 arguments 对象:
箭头函数没有自己的 arguments 对象,无法通过 arguments 访问传入的参数列表。如果需要获取参数,可以使用剩余参数(rest parameters