【问题标题】:replace the use of function declaration when using es6/es7 [duplicate]使用 es6/es7 时替换函数声明的使用 [重复]
【发布时间】:2018-09-27 02:44:39
【问题描述】:

我更喜欢做函数声明

doSomething() //still works
function doSomething() {}

结束

var doSomething = function() = {}
doSomething()

因为有了函数声明,我不必担心顺序,它只是在顶部被提升了。现在谈到 es6,我的同事喜欢做 const doSomething = () => {} 因为对他们来说他们不喜欢“函数”这个词。我失去了吊装,我该如何解决?

我希望我能做到这一点

abc()
abc() => {}

但是我必须使用 babel 以便可以忽略单词 function 以在 es6/es7 中创建函数?

【问题讨论】:

  • 如果您的目标是支持 ES6 的浏览器或环境,则不需要babel,所以这取决于。
  • 箭头函数没有被提升。这实际上是一种很好的行为,因为它可以生成更多可调试的代码。
  • 告诉你的同事你不喜欢const,或者(箭头)函数表达式。让你的同事明白 function 声明在 ES6+ 中没有任何意义上的“弃用”。一起建立编码约定。

标签: javascript ecmascript-6 babeljs ecmascript-2017


【解决方案1】:

不,你不能:

abc();
abc() => {console.log('test');}

此外,箭头函数现在有自己的this 上下文,不能用作构造函数。这意味着它们不仅适用于不想使用 function 关键字的人。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions

【讨论】:

  • 但是我们并不经常构造函数,大多数时候我们只是想创建函数来将业务逻辑“存储”成更小的部分。我知道 this 在箭头函数中消失了,我们发现箭头函数很有用,因为我们编写了更短的代码,尤其是我们不必显式返回。
  • 然后只使用箭头函数。在我看来,在使用它们之前声明你的函数是一种很好的做法。所以不要依赖吊装。
  • 好吧,有道理,没有对错之分,只是偏好。
猜你喜欢
  • 2019-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-22
相关资源
最近更新 更多