【发布时间】:2020-06-30 12:33:10
【问题描述】:
ES2015 中的箭头函数提供了更简洁的语法。
- 我现在可以用箭头函数替换我所有的函数声明/表达式吗?
- 我需要注意什么?
例子:
构造函数
function User(name) {
this.name = name;
}
// vs
const User = name => {
this.name = name;
};
原型方法
User.prototype.getName = function() {
return this.name;
};
// vs
User.prototype.getName = () => this.name;
对象(文字)方法
const obj = {
getName: function() {
// ...
}
};
// vs
const obj = {
getName: () => {
// ...
}
};
回调
setTimeout(function() {
// ...
}, 500);
// vs
setTimeout(() => {
// ...
}, 500);
可变函数
function sum() {
let args = [].slice.call(arguments);
// ...
}
// vs
const sum = (...args) => {
// ...
};
【问题讨论】:
-
随着 ES2015 越来越流行,关于箭头函数的类似问题也越来越多。我觉得这个问题没有一个很好的规范问题/答案,所以我创建了这个。如果您认为已经有一个好的,请告诉我,我将关闭这个重复或删除它。随意改进示例或添加新示例。
-
JavaScript ecma6 change normal function to arrow function 怎么样?当然,一个普通的问题永远不会像一个专门写成规范的问题那样好和通用。
-
Look at this Plnkr example 变量
this非常不同timesCalled每次调用按钮时仅增加 1。这回答了我的个人问题:.click( () => { } )和.click(function() { })从 Plnkr 中的 Guid 计数中可以看出,在循环中使用时,它们都会创建相同数量的函数。
标签: javascript ecmascript-6 arrow-functions