我剛剛購買了最新版本的「JavaScript:權威指南」,並且已經有了一個問題。 :d定義函數的JavaScript差異
是以下行語義上是相同的:
var square = function(n){
return n * n;
};
和
function square(n){
return n * n;
}
如果是的話,使用的是他們的優勢/劣勢?
感謝您的幫助!
我剛剛購買了最新版本的「JavaScript:權威指南」,並且已經有了一個問題。 :d定義函數的JavaScript差異
是以下行語義上是相同的:
var square = function(n){
return n * n;
};
和
function square(n){
return n * n;
}
如果是的話,使用的是他們的優勢/劣勢?
感謝您的幫助!
檢查了這一點:
a(); // prints 'A'
function a(){
console.log('A');
};
這:
b(); // throws error. b is not a function
var b = function() {
console.log('B');
};
你有沒有注意到有什麼區別?
感謝您的簡單解釋! – aydio 2011-05-27 11:45:55
的確很好的例子! – 2011-05-27 13:40:19
是的,他們完全一樣。
第一種方法的主要優點是,它爲您提供了該函數的引用,這樣,你可以把它傳遞給另一個函數或附加到一個對象,如果你需要。
我同意第一句話,但是如果他們都做完全相同的事情,又怎麼能與另一個不同? – 2011-05-26 14:04:10
您可以對函數聲明(傳遞和分配)執行相同的操作。 – 2011-05-26 14:06:36
不同的是,在第一個解決方案,你可以這樣做:
var square = function(n){
return n * n;
};
// some code
square = function(n) { return n*n*n; }
你有參考的功能。在另一個解決方案中,該函數是靜態聲明的。
免責聲明:JS需要大師來告訴我,如果我錯了=)。
嗨克萊門特,說實話,我不明白最後一行是什麼。你能否向我解釋** return n * n * n; **當我想計算平方的目的? – aydio 2011-05-27 12:04:53
你的例子是一個函數,它返回一個數字的平方值,但它可能是任何其他函數,確實很複雜,或者真的是上下文相關的工作。爲方形方法返回'n * n * n'是愚蠢的,但僅僅是爲了舉例。 – 2011-05-27 13:39:41
的可能重複的[是什麼函數表達式VS聲明在Javascript之間的差異?](http://stackoverflow.com/questions/1013385/what-is-the-difference-between-a-function-expression- vs-declaration-in-javascript) – 2011-05-26 14:13:57
謝謝指出,費利克斯。這兩種方法之間的差異現在已經很清楚了。 – aydio 2011-05-27 11:39:44