【问题标题】:Name or term of javascript syntax for function without function text?没有函数文本的函数的 javascript 语法的名称或术语?
【发布时间】:2016-07-22 05:08:38
【问题描述】:

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

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

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

【问题讨论】:

  • 第一个是箭头函数。第二个是语法错误。你需要(e) => {}
  • @torazaburo 胖箭头功能正确。有些人错误地称它为 lambda
  • 因为是ES6,目前还不是所有浏览器都支持。
  • 感谢@torazaburo 我相信你是对的,Mozilla 开发者网络将其称为arrow functions developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…。我知道它不支持只是想弄清楚它叫什么,以便找出支持它的浏览器和版本。
  • 您仍然可以使用箭头函数进行编程,同时使您的代码与旧版浏览器兼容,请参阅下面的答案以了解更多信息:)

标签: javascript function


【解决方案1】:

这是一个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的信息。

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

【讨论】:

  • 公平地说,在这种情况下,甚至没有使用上下文,所以bind 是不必要的。但你的想法是对的。
  • 我知道没有使用上下文,但汤姆特别提到他使用箭头函数的主要原因是他可以在当前词法范围内使用this。这就是为什么我建议使用bind()
  • 谢谢你,你在我所问的范围内完整地回答了我的问题!!!感谢您的澄清,这正是我想要的!
  • function(data) => { 看起来无效。
猜你喜欢
  • 2022-09-27
  • 1970-01-01
  • 2021-12-23
  • 1970-01-01
  • 2015-12-10
  • 1970-01-01
  • 2021-03-04
  • 2021-08-19
  • 1970-01-01
相关资源
最近更新 更多