没有函数文本的函数的javascript语法的名称或术语?

时间:2016-07-22 05:08:39

标签: javascript function

我一直在使用一种新方法,我刚刚学习了将外部范围保留在另一个函数中,但我不记得所用语法的术语。以下是其工作原理的示例:

Api.get().then( (data) => {
   console.log('do something with data', data);
}, ( e ) {
   console.log('Error: ', e );
});

基本上,它是一个回调函数,但这种语法的术语或名称是什么。我之所以喜欢使用它,是因为您仍然可以引用this及其值和方法,而使用function( data )会丢失this上下文。我想知道这种语法的名称或术语,因为它似乎不受iphone或safari支持,我想进一步研究支持这种方法的支持和文档。

1 个答案:

答案 0 :(得分:2)

它是arrow function及其最新第6版ECMAScript标准的一部分(自2015年发布以来也称为ECMAScript 2015)。许多浏览器都不支持它,因为您可以看到here

您可以在旧浏览器中使用名为transpiler的东西来使用它们,实质上它只是将ECMAScript 6代码(不是所有支持的代码)转换为更兼容的ECMAScript 5代码。有许多,但Babel是最受欢迎的。您可以尝试 here ,并观看箭头功能如何转换为适用于所有浏览器的兼容ECMAScript 5代码。

  

我喜欢使用它的原因是因为你仍然可以参考这个   及其价值观和方法

您可以使用bind()获得与箭头功能相同的结果。试试这个:

Api.get().then(function(data) {
   console.log('do something with data', data);
}.bind(this), function(e) {
   console.log('Error: ', e );
}.bind(this));

bind()的作用是创建一个新函数,将您发送给它的任何对象设置为this作为第一个参数。这样,您仍然可以访问您正在处理的当前范围。您可以详细了解bind() here

我希望这能回答你的问题。