Javascript函数声明。什么时候用?

时间:2011-09-22 10:25:59

标签: javascript function

  

可能重复:
  Javascript: var functionName = function() {} vs function functionName() {}

你会这样做的原因是什么:

somename = function(param1, param2) { }

而不是做:

function somename(param1, param2) { }

3 个答案:

答案 0 :(得分: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() {}

答案 1 :(得分: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())
})

答案 2 :(得分:0)

第一种方法创建一个函数对象,然后可以将其作为参数传递给其他函数。例如,如果要在文本框值更改时执行某些代码,可以设置这样的回调(使用jQuery):

var onChange = function() { /* ... */ }
$("#username").change(onChange);