JavaScript 箭头函数
它变得更短了!如果函数只有一个语句,并且该语句返回一个值,您可以删除括号*和* `return` 关键字
注意: 这仅在函数只有一个语句时才有效。
如果您有参数,则将它们传递到括号内
实际上,如果您只有一个参数,也可以跳过括号
`this` 怎么办?
与普通函数相比,箭头函数中 `this` 的处理方式也不同。
简而言之,箭头函数没有 `this` 的绑定。
在普通函数中,`this` 关键字代表调用函数的对象,该对象可以是窗口、文档、按钮或其他任何东西。
对于箭头函数,`this` 关键字*始终*代表定义箭头函数的对象。
让我们看两个示例来理解区别。
这两个示例都调用了同一个方法两次,第一次是在页面加载时,第二次是在用户点击按钮时。
第一个示例使用普通函数,第二个示例使用箭头函数。
结果显示第一个示例返回两个不同的对象(窗口和按钮),而第二个示例返回两次窗口对象,因为窗口对象是函数的“所有者”。
示例
对于普通函数,this
代表调用该函数的对象
// 普通函数
hello = function() {
document.getElementById("demo").innerHTML += this;
}
// 窗口对象调用函数
window.addEventListener("load", hello);
// 按钮对象调用函数
document.getElementById("btn").addEventListener("click", hello);
示例
对于箭头函数,this
代表函数的所有者
// 箭头函数
hello = () => {
document.getElementById("demo").innerHTML += this;
}
// 窗口对象调用函数
window.addEventListener("load", hello);
// 按钮对象调用函数
document.getElementById("btn").addEventListener("click", hello);
在使用函数时,请记住这些差异。有时普通函数的行为是你想要的,如果不是,请使用箭头函数。
浏览器支持
下表定义了第一个完全支持 JavaScript 中箭头函数的浏览器版本
Chrome 45 | Edge 12 | Firefox 22 | Safari 10 | Opera 32 |
2015 年 9 月 | 2015 年 7 月 | 2013 年 5 月 | 2016 年 9 月 | 2015 年 9 月 |