JavaScript函数声明。什么时候使用哪个?

5

基本上它们是相同的,但第一个被称为“函数字面量表示法”。 - TheOneTeam
3个回答

3

好的,既然第一个语法是变量声明,第二个是实际函数声明,我会坚持使用第二个,除非我真正需要第一个。

尝试阅读作用域和变量提升,你会发现第二个语法有时会给你带来麻烦 :)

http://www.dustindiaz.com/javascript-function-declaration-ambiguity/

http://www.adequatelygood.com/2010/2/JavaScript-Scoping-and-Hoisting

顺便提一下,你可能想浏览这个帖子并寻找更多好东西: var functionName = function() {} vs function functionName() {}


我理解。但是,在什么情况下你会使用变量声明方式呢? - PeeHaa
1
有很多地方可以使用它,但只有少数需要使用它。其中一个想到的例子是,如果您使用第三方框架/库并且必须重载库/框架中的现有函数。 - Martin Jespersen

1
$fn = function(param1, param2)

通过使用上述表单,您可以将$fn作为参数传递给任何函数,或者您可以从中创建一个新对象:
function doSomethingWithFn($fn);

或者

$fnObject = new $fn(param1, param2)

当你只需要一个实用函数或闭包时,可以使用第二种形式:

function utilityFn(str) {
    return str.indexOf('a')
}
var str = utilityFn('abc');

或者

$('#element').click(function() {
    utiliyFn($('#element').html())
})

1
不是真的。无论哪种形式创建的函数都可以用作函数参数。 - Tim Down

0
第一种方法创建一个函数对象,然后您可以将其作为参数传递给其他函数。例如,如果您想在文本框值更改时执行某些代码,可以设置回调,如下所示(使用jQuery):
var onChange = function() { /* ... */ }
$("#username").change(onChange);

第二种形式(函数声明)也可以这样使用。 - Tim Down

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接