这两种功能/方法有什么区别?

时间:2010-01-29 07:03:58

标签: javascript function

我只使用jQuery编写JavaScript代码。令我困惑的一件事是这两种编写函数的方法,

第一种方法

vote = function (action,feedbackId,responseDiv)
{
    alert('hi');
    return feedbackId;
}

第二种方法

function vote(action, feedbackId,responseDiv)
{
    alert('hi');
    return feedbackId;
}

两者之间有什么区别?为什么要使用第一种方法或第二种方法?

4 个答案:

答案 0 :(得分:8)

第一个是分配给vote变量的函数表达式,第二个是函数声明

主要区别在于函数语句是在解析时计算的,它们在之前在运行时声明它。

另见:

答案 1 :(得分:6)

function myFunction() {}

...被称为“函数声明”。

var myFunction = function() {};

...被称为“函数表达式”。

他们非常相似;但是:

  • 在引用之后,可以声明函数声明,而函数表达式必须在引用之前声明:

    // OK
    myFunction();
    function myFunction() {}
    
    // Error
    myFunction();
    var myFunction = function() {};
    
  • 由于函数表达式是一个语句,因此后跟一个分号。

有关详细信息,请参阅Function constructor vs. function declaration vs. function expression上的Mozilla Developer Centre

答案 2 :(得分:0)

第一个是函数表达式,

var calculateSum = function(a, b) { return a + b; }

alert(calculateSum(5, 5)); // Alerts 10

第二个是普通函数声明。

答案 3 :(得分:0)

函数声明语法不能在块语句中使用。

法律:

function a() {
    function b() {

    }
}

非法:

function a() {
    if (c) {
        function b() {

        }
    }
}

你可以这样做:

function a() {
    var b;
    if (c) {
        b = function() {

        };
    }
}