【问题标题】:Is it considered good practice using arrow functions in general in JavaScript? [duplicate]在 JavaScript 中一般使用箭头函数是否被认为是一种好习惯? [复制]
【发布时间】:2016-09-15 19:37:09
【问题描述】:

所以对于 ES6,我们有箭头函数——在我看来,除了维护 this 上下文之外——增加了可读性。

常见示例: [...].map(item => item.attr)[...].reduce((a,b) => {...} )

所以我问自己:使用这些箭头函数而不是function(){...} 是否被认为是一种好习惯。因为这就是你现在看到的。

我个人的 2 美分:

  • 从可读性和可维护性的角度来看,我想普遍使用箭头函数
  • 从技术和上下文的角度来看,我认为使用箭头函数应该是一个例外,而不是常态,因为它会导致不需要的行为。例如:更改箭头函数的上下文是毫无意义的:(()=>{}).apply(window) 绝对没有效果。也就是说:需要特定上下文的库很容易被箭头函数弄垮。

这只是我想法的一小部分。每次我使用箭头函数时,我都会有这种偏执狂,因为当你实际上不需要留在那个上下文中时,我觉得这样做是错误的。

【问题讨论】:

  • 我认为你应该在适当的时候使用它们,在不适当的时候不要使用它们。
  • @vlaz 你是个有远见的人。
  • @vlaz:这是一个非常详尽的答案。谢谢。
  • 看起来一些不错的 SO 专家刚刚对这个问题表示否定。继续做好工作,永远不要把它留给自己。

标签: javascript ecmascript-6 arrow-functions


【解决方案1】:

正如您所说,箭头函数在词法上绑定this。它还提供了一些语法糖。这在某些情况下非常有用,例如在将函数作为参数的方法调用中使用(.map().filter() 等)

就标准而言,没有。在某些地方您确实想要使用箭头函数,例如在定义方法时,但在大多数情况下,您只想使用您的团队正在使用的任何东西 - 您可能认为它看起来更具语义和可读性,但您的团队可能不会。

对于前端 Web 开发,箭头函数并不像您想象的那么普遍,除非您在其之上维护 Babel。对于 Node 开发,我希望看到更多箭头,但在大多数情况下,它们是一个小众项目,在大多数情况下,仅使用 function() 并不能真正提供任何客观的好处。

【讨论】:

    【解决方案2】:

    据我了解,使用转译器几乎没有性能差异,因为它会将其解析为 ES5,因此即使您不需要上下文绑定,保持一致也无妨。

    我听说在某些浏览器中性能会受到轻微影响,但是当 ES6/7 在浏览器中完全实现和优化时,这种情况可能会消失。

    考虑到简洁明了的优势,我认为一旦完全支持它们就没有理由不使用它们。

    【讨论】:

      【解决方案3】:

      了解当前箭头函数的上下文是一个很好的做法。

      箭头不能是构造函数。

      非词法 this 是以前经常被滥用的东西,在 ES6 开发中很少是一个好主意。如果这个人正在为 jQuery 编写 ES6 代码,那么如果 this 有问题,他/她的手指上可能应该绑一个字符串。

      【讨论】:

      • 看起来一些不错的 SO 专家刚刚对这个问题表示否定。继续做好工作,永远不要把它留给自己。
      猜你喜欢
      • 1970-01-01
      • 2021-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-19
      相关资源
      最近更新 更多