📅  最后修改于: 2023-12-03 15:41:46.827000             🧑  作者: Mango
JavaScript中的箭头函数是ES6中引入的一种新语法,用于更简洁地定义匿名函数。箭头函数语法使用引号包含一个函数参数列表,跟随一个箭头,后跟一个函数体。
() => {
// 函数体
}
箭头左侧的括号用于定义函数的参数列表(可以为空括号)。箭头右侧的花括号用于定义函数体。如果函数只有一条语句,可以省略花括号和return关键字。
(parameter1, parameter2, ..., parameterN) => expression
上面这种格式的箭头函数可以用一个简单的表达式代替函数体。这种箭头函数也被称为“简化版箭头函数”。
箭头函数没有自己的this关键字,它的this是从它的外层作用域中获取的。这意味着在箭头函数内部,this的值等于函数定义时的this的值。
const obj = {
name: 'Tom',
sayName: function() {
console.log(this.name);
},
sayNameArrow: () => {
console.log(this.name);
}
}
obj.sayName(); // 输出 "Tom"
obj.sayNameArrow(); // 输出 "undefined"
在上面的例子中,箭头函数sayNameArrow
中的this.name
为undefined,因为箭头函数内部获取到的this
是全局作用域中的this
,而不是obj
对象。
箭头函数不能使用arguments对象,可以使用剩余参数来替代。
const sum = (...args) => {
let total = 0;
for (let i = 0; i < args.length; i++) {
total += args[i];
}
return total;
}
sum(1, 2, 3, 4); // 输出10
箭头函数不能用作构造函数,不能通过new
关键字来调用箭头函数。
const Person = (name) => {
this.name = name;
}
const tom = new Person('Tom'); // 报错!
箭头函数不能使用yield关键字,不能用作generator函数。
箭头函数是ES6中引入的一种语法,用于更简洁地定义匿名函数。它没有自己的this
关键字,不能使用arguments
对象和yield
关键字,也不能用作构造函数。