JavaScript 箭头函数
它变得更短了!如果函数只有一个语句,并且该语句返回值,则可以删除大括号和return
关键字
注意:这仅在函数只有一个语句时才有效。
如果你有参数,则将它们放在括号内
事实上,如果你只有一个参数,你也可以省略括号
关于 this
呢?
与常规函数相比,箭头函数中 this
的处理方式也不同。
简而言之,箭头函数没有 this
的绑定。
在常规函数中,this
关键字代表调用函数的对象,它可以是 window、document、按钮或其他任何对象。
使用箭头函数时,this
关键字始终代表定义箭头函数的对象。
让我们看两个例子来理解其中的区别。
两个示例都调用了一个方法两次,一次是在页面加载时,另一次是在用户单击按钮时。
第一个示例使用常规函数,第二个示例使用箭头函数。
结果显示第一个示例返回两个不同的对象(window 和 button),而第二个示例返回 window 对象两次,因为 window 对象是该函数的“所有者”。
示例
使用常规函数时,this
代表调用函数的对象
// Regular Function
hello = function() {
document.getElementById("demo").innerHTML += this;
}
// The window object calls the function
window.addEventListener("load", hello);
// A button object calls the function
document.getElementById("btn").addEventListener("click", hello);
示例
使用箭头函数时,this
代表函数的所有者
// Arrow Function
hello = () => {
document.getElementById("demo").innerHTML += this;
}
// The window object calls the function
window.addEventListener("load", hello);
// A button object calls the function
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 月 |