它是什么
This is an arrow function. 箭头函数是由ECMAscript 6引入的一种简短语法,可以与使用函数表达式的方式类似地使用 . 换句话说,您通常可以使用它们代替 function (foo) {...} 之类的表达式 . 但他们有一些重要的区别 . 例如,它们不绑定自己的 this 值(请参阅下面的讨论) .
Arrow函数是ECMAscript 6规范的一部分,但不是当今大多数浏览器中使用的"normal" JavaScript的一部分 . 然而,它们在许多浏览器中都是partially supported in Node v. 4.0+(见下文) .
从Mozilla文档:
与函数表达式相比,箭头函数表达式(也称为胖箭头函数)具有更短的语法,并且词汇绑定此值(不绑定它自己的this,arguments,super或new.target) . 箭头功能始终是匿名的 . 这些函数表达式最适合非方法函数,不能用作构造函数 .
关于箭头函数的工作原理的注释
箭头功能最方便的功能之一埋在上面的文本中:
箭头函数...词法绑定此值(不绑定它自己的...)
简单来说,这意味着箭头函数保留其上下文中的 this 值,并且没有自己的 this . 传统的函数会绑定自己的 this 值,需要很多体操,如 self = this; 等,才能访问或操纵 this 从另一个函数内的一个函数 . 有关此主题的更多信息,请参阅the explanation and examples in the Mozilla documentation .
示例代码
示例(也来自文档):
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)
边缘(第12节)
歌剧(第32节)
Android浏览器(v.47)
Opera Mobile(第33版)
适用于Android的Chrome(第47版)
Firefox for Android(v.44)
Safari(v.10)
iOS Safari(v.10.2)
三星互联网(第5版)
百度浏览器(v.7.12)
不支持:
IE(通过v.11)
Opera Mini(通过v.8.0)
黑莓浏览器(通过第10节)
IE Mobile(通过v.11)
适用于Android的UC浏览器(通过v.11.4)
QQ(通过v.1.2)
您可以在CanIUse.com(无联盟)找到更多(和更多当前)信息 .