我只使用jQuery编写JavaScript代码。令我困惑的一件事是这两种编写函数的方法,
第一种方法
vote = function (action,feedbackId,responseDiv)
{
alert('hi');
return feedbackId;
}
第二种方法
function vote(action, feedbackId,responseDiv)
{
alert('hi');
return feedbackId;
}
两者之间有什么区别?为什么要使用第一种方法或第二种方法?
答案 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() {
};
}
}