它是什么
这是一个箭头函数。箭头函数是ECMAscript 6引入的一种简短语法,可以类似于使用函数表达式的方式使用。换句话说,你可以经常使用它们来代替像function (foo){…}这样的表达式。但它们有一些重要的区别。例如,它们不绑定自己的值(参见下面的讨论)。
箭头函数是ECMAscript 6规范的一部分。并非所有浏览器都支持它们,但Node v. 4.0+和截至2018年使用的大多数现代浏览器都部分或完全支持它们。(我在下面列出了支持浏览器的部分列表)。
您可以在Mozilla文档中阅读更多关于箭头函数的内容。
来自Mozilla文档:
与函数表达式相比,箭头函数表达式(也称为胖箭头函数)具有更短的语法,并且在词法上绑定this值(不绑定自己的this、参数、super或new.target)。箭头函数总是匿名的。这些函数表达式最适合用于非方法函数,它们不能用作构造函数。
在箭头函数中如何工作的说明
箭头函数最方便的特性之一就隐藏在上面的文本中:
一个箭头函数…从词法上绑定this值(不绑定自己的this…)
简单来说,这意味着箭头函数从它的上下文中保留this值,而没有自己的this值。传统函数可以绑定自己的this值,这取决于它是如何定义和调用的。这可能需要大量的操作,如self = This;等,以便从一个函数访问或操作另一个函数中的This。有关此主题的更多信息,请参阅Mozilla文档中的解释和示例。
示例代码
示例(同样来自文档):
var a = [
"We're up all night 'til the sun",
"We're up all night to get some",
"We're up all night for good fun",
"We're up all night to get lucky"
];
// These two assignments are equivalent:
// Old-school:
var a2 = a.map(function(s){ return s.length });
// ECMAscript 6 using arrow functions
var a3 = a.map( s => s.length );
// both a2 and a3 will be equal to [31, 30, 31, 31]
兼容性说明
您可以在Node中使用箭头函数,但浏览器的支持参差不齐。
浏览器对该功能的支持已经有了很大的改进,但对于大多数基于浏览器的用法来说,它仍然不够广泛。截至2017年12月12日,当前版本支持:
Chrome (v. 45+)
Firefox (v. 22+)
Edge (v. 12+)
歌剧(32+)
Android浏览器(v47 +)
Opera Mobile (33+)
Chrome for Android (v47 +)
Firefox for Android (v. 44+)
Safari (v. 10+)
iOS Safari(版本10.2+)
三星互联网(5+)
百度浏览器(v7.12 +)
不支持:
IE(通过第11节)
Opera Mini(通过v. 8.0)
黑莓浏览器(通过v. 10)
IE Mobile(通过v. 11)
UC浏览器for Android(通过v. 11.4)
QQ(通过1.2 .)
你可以在CanIUse.com上找到更多(以及更多最新的)信息。