我最近开始保持别人的JavaScript代码,我正在修复错误,添加功能,也试图更新代码并使其更加一致。

以前的开发人员使用了两种方式来宣布功能,我无法解决是否有原因。

兩種方式是:

var functionOne = function() {
    // Some code
};
function functionTwo() {
    // Some code
}

使用这两种不同的方法的原因是什么?每个方法的优点和缺点是什么?可以用一种方法做些什么,不能用另一种方法做些什么?


当前回答

在代码维护成本方面,所谓的功能更受欢迎:

无论它们在哪里被宣布(但仍然受到范围限制)。 更抵抗错误,如条件启动(你仍然可以过度排序,如果你愿意)。 代码变得更可读,通过分配地方功能分开的范围功能。 通常在范围内,功能先行,其次是局部功能的声明。

我怀疑更多关于名称功能的PROS正在追踪,而被列为名称功能的优势是匿名功能的缺点。

历史上,匿名函数出现,因为JavaScript作为语言无法列出名为函数的会员:

{
    member:function() { /* How do I make "this.member" a named function? */
    }
}

其他回答

我正在列出下面的差异:

函数声明可以在代码中的任何地方放置。 即使它在定义在代码中出现之前被引用,它也被执行,因为函数声明被承诺记忆或以某种方式被加密,在页面上的任何其他代码开始执行之前。 查看下面的函数: 函数外部函数() {函数 foo() { 返回 1; } 返回 foo(); 函数

我用我的代码中的变量方法出于一个非常具体的原因,其理论已经以抽象的方式被覆盖,但一个例子可以帮助一些像我这样的人,有有限的JavaScript专业知识。

有些品牌需要特定的功能,而有些则不。有时我需要添加新的功能来做新的品牌特定的事情.我很高兴更改共享编码,但我不想需要更改所有160套品牌文件。

使用变量合成,我可以在共享代码中宣言变量(基本上是函数指标),并分配一个三位一体函数,或设置为零。

我正在添加自己的答案只是因为其他每个人都彻底覆盖了包装部分。

我想知道哪种方式是更好的很长一段时间,现在,感谢 http://jsperf.com 现在我知道:)

此分類上一篇

功能声明更快,而这在Web Dev中真的很重要吗? ;)

函数One = 函数() {} 定义在运行时间,函数Two() {} 定义在部分时间。

// Run-Time function declaration 
functionOne(); // Calling functionOne function here will give an Error
var functionOne = function () {
  // Some code
};

// Parse-Time function declaration 
functionTwo(); // Calling functionTwo function will not give an Error
function functionTwo() {
  // Some code...
}

此分類上一篇: Run-time vs Parse-time javascript run-time vs parse-time

您不能在函数声明上使用.bind() 方法,但您可以在函数表达式上使用。

功能宣言:

函数 x() { console.log(this) }.bind('string') x()

功能表达:

var x = 函数() { console.log(this) }.bind('string') x()