2012-05-16 132 views
0

可能重複:
JavaScript: var functionName = function() {} vs function functionName() {}JavaScript函數聲明差異

是什麼在這個函數聲明的區別,我知道例如,一個是做正常的方式,我們爲什麼需要兩年三?

function one(var1,var2) { 
    alert("inside functtion one"); 
} 

two = function (var1,var2) { 
    alert("inside function two"); 
} 

var three = function (var1,var2) { 
    alert("inside function three"); 
} 
+2

三和一個是(對於這個例子)相同..兩個範圍??將它附加到窗口對象iirc? – rlemon

+0

查看:http://net.tutsplus.com/tutorials/javascript-ajax/the-basics-of-object-oriented-javascript/ –

+0

@rlemon三和一個微妙的不同,你可以在聲明之前調用一個,但是在分配之後你不能撥打三。另外一個是命名函數,而三個是匿名的,但你可以解決這個問題。 – Neil

回答

0

第一個和第三個只是兩種方法來聲明一個函數,它在全局範圍鏈中存在。中間是將函數two附加到窗口對象並允許它存在那裏。

console.log(window.one); // undefined 
console.log(window.two); 
console.log(window.three); // undefined 
+0

注意:這只是**一個**區別。根據上下文的不同,你在閉包中問你的問題與它有很大關係。這些聲明在哪裏發生? – rlemon

+0

它的腳本在標題 – JohnA

+0

中的頁頭中運行,這有什麼區別?不在文檔中的相對於其他JavaScript代碼的位置。它在關閉嗎? – rlemon