正如許多人所建議的,命名函數表達式的用法之一是遞歸調用自身。但是,似乎在Chrome控制檯中,沒有名稱的函數表達式仍可以這樣做。我知道這將是stackoverflow,但是,我期望輸出像a() is not a function
,而不是未捕獲RangeError:超過最大調用堆棧大小(...)。用於遞歸的命名函數表達式
var a = function() {
a();
}
a();
以下帶名稱的函數表達式應該給我一個Uncaught RangeError:超出最大調用堆棧大小(...)。
var a = function a() {
a();
}
a();
編輯2: 在這個環節https://developer.mozilla.org/en/docs/web/JavaScript/Reference/Operators/function,它說,「如果你想引用當前函數的函數體裏面,你需要創建一個名爲函數表達式。」然而,在我看來,這種說法是不正確的,因爲你仍然可以參考函數體內的當前功能不分配功能標識它
任何想法,將不勝感激
而你的問題是....? – Ionut
感謝您的評論,也許我沒有明確提出我的問題。我的問題是因爲'沒有名稱的函數表達式'可以自己遞歸調用,爲什麼我們需要一個'命名函數表達式' –
[var functionName = function(){} vs function functionName(){}](http: //stackoverflow.com/questions/336859/var-functionname-function-vs-function-functionname) – Ionut