JavaScript 箭头函数
:箭头函数是在 ES6 中引入的。箭头函数允许我们编写更短的函数语法:
1 | let myFunction = (a, b) => a * b; |
:在 Arrow 之前
1 | hello = function() { |
:带箭头功能
1 | hello = () => { |
越来越短了!如果函数只有一条语句,并且该语句返回一个值,则可以删除括号和return
关键字:
:箭头函数默认返回值
1 | hello = () => "Hello World!"; |
**注意:**仅当函数只有一个时,这才有效陈述。
如果您有参数,请将它们传递到括号内:
:带参数的箭头函数
1 | hello = (val) => "Hello " + val; |
事实上,如果你只有一个参数,你也可以跳过括号:
:不带括号的箭头函数
1 | hello = val => "Hello " + val; |
this
怎么样?
与常规函数相比,箭头函数对此的处理也有所不同。
简言之,使用箭头函数时,没有this
绑定 。
在常规函数中,this
关键字表示调用 函数,可以是窗口、文档、按钮或其他任何内容。
对于箭头函数,this
关键字始终表示 对象 定义了箭头函数。
让我们看两个例子来了解其中的区别。
这两个示例都调用方法两次,第一次是在页面加载时,第二次是 当用户单击按钮时。
第一个示例使用常规函数,第二个示例使用 箭头函数。
结果显示,第一个示例返回两个不同的对象(window
和button
),和第二个示例返回 window
对象两次,因为window
对象是 函数的“所有者”。
:使用常规函数`this`表示 *调用*函数的对象
1 | // Regular Function: |
:带箭头的函数this表示函数的所有者
1 | // Arrow Function: |
在使用函数时,请记住这些差异。有时 常规函数的行为是您想要的,如果不是,请使用箭头函数。
浏览器支持
下表定义了第一个完全支持 JavaScript 中的箭头函数:
Chrome 45 | Edge 12 | Firefox 22 | Safari 10 | Opera 32 |
Sep, 2015 | Jul, 2015 | May, 2013 | Sep, 2016 | Sep, 2015 |
0评论