针对不同样式的现代JavaScript函数定义有哪些注意事项?

时间:2015-12-23 03:57:22

标签: javascript function ecmascript-6 ecmascript-2015

我正在尝试确定用于模块级函数定义的样式。

以下是我考虑的选项:

// function expression using an arrow
const foo = (arg)=> {
    // ...
};


// function expression with the `function` keyword
const bar = function(arg){
    // ...
};


// function declaration
function baz(arg){
    // ...
}

我更喜欢foo样式,但它似乎是非标准的。我没有考虑过它的考虑因素吗?例如,在使用函数表达式const或箭头时,是本机还是在转换时会有显着的性能损失吗?

这是我到目前为止所拥有的:

const与函数表达式一起使用而不是使用函数声明的优点:

  • 如果您只使用constlet,则不会提升任何内容:它使语言更易于使用。
  • 如果您尝试在同一范围内定义两个具有相同名称的函数,则使用const会使解释器抛出错误(这非常有用)。
  • 使用const可以说出你的意思:大多数时候,人们想要定义一个函数,而不是分配给一个变量。
  • 使用const代替函数声明可以更清楚地表明函数是JS中的值。

函数表达式的缺点:

  • 函数声明导致变量声明和函数体被提升到当前函数体的顶部(我认为)。如果您希望将JS文件与顶部的函数使用代码和底部的函数定义放在一起,这实际上可能会有所帮助。
  

我找不到任何函数表达式难以调试的情况,或者在函数表达式中使用递归更难的情况。

使用箭头而不是function关键字的优点:

0 个答案:

没有答案