之間的區別正如標題所說,什麼是什麼這2個函數的語法類型
MyFunction = function() {
}
和
function MyFunction() {
}
沒有什麼區別?
重複:var functionName = function() {} vs function functionName() {}
之間的區別正如標題所說,什麼是什麼這2個函數的語法類型
MyFunction = function() {
}
和
function MyFunction() {
}
沒有什麼區別?
重複:var functionName = function() {} vs function functionName() {}
第一種形式實際上是與分配給它的匿名功能一個變量,第二個是一個聲明的函數。它們是幾乎是可以互換,但有一些不同:調試器與匿名(因爲他們缺少名稱)有更加困難的時間,並且JS引擎可以直接訪問腳本中存在的任何聲明函數,但是anons可以在他們被分配之前不會被訪問。
我想你的意思
var MyFunction = function() {
}
而且在許多情況下,幾乎沒有什麼差別。
當你在某種包裝類的內部並且想要確定你的名字空間時(比如在greasemonkey中),var語法有時是有用的。
此外,我相信函數是構造函數的東西(與。原型等)不適用於var語法。
這裏是一個區別:
function Moose() {
alert(arguments.callee.name); // "Moose"
}
var Cow = function() {
alert(arguments.callee.name); // ""
}
有Firefox的一個細微的差別,當你宣佈一個窗口load
事件處理程序。聲明在腳本標籤下面僅適用於火狐:
function onload() {
alert(42);
}
你必須做這樣的IE瀏覽器,歌劇,Safari或Chrome:
onload = function() {
alert(42);
}
function myFunction(){}
相同var myFunction = function myFunction(){}
。如果你只是做MyFunction = function(){}
,這就像MyFunction = function anonymous(){}
。
變量和函數具有不同的作用域,但函數只能通過變量名在函數外部引用,該變量名需要綁定到該函數。
function myFunction(){}
將myFunction
變量綁定到恰好具有相同名稱的函數。
如果你關閉說重複,你可以請評論一個鏈接到它是一個重複的東西? – singpolyma 2008-12-17 16:44:55
我更喜歡將它們添加到問題 - 他們更容易找到,我認爲 – Greg 2008-12-17 16:49:15
@RoBorg足夠公平。當我看着它不是在任何地方都是:) – singpolyma 2008-12-17 17:09:14