在JavaScript函數,你需要定義嵌套函數的函數表達式或允許在一個函數體的函數聲明?例如,這樣的事情是否符合?嵌套函數的Javascript
function a() {
function b() {
function c() {
window.alert(3);
}
window.alert(2);
}
window.alert(1);
}
或者你需要做這樣的事嗎?
function a() {
var a = function() {
var c = function() {
window.alert(3);
}
window.alert(2);
}
window.alert(1);
}
ECMA-262說:
若干的ECMAScript廣泛使用的實現是公知的,以支持使用FunctionDeclaration作爲語句。然而,在應用於這些函數聲明的語義中,這些實現之間存在重大且不可調和的變化。因爲這些不可調和的差異,使用FunctionDeclaration作爲在代碼語句的結果是未實施方式中可靠地便攜式的。建議ECMAScript實現禁止任何的FunctionDeclaration這種用法或遇到這樣的使用情況時發出警告。 ECMAScript的未來版本可以定義用於在語句上下文中聲明函數的可選便攜式方法。
這是否意味着函數體中的函數聲明在技術上是不正確的,還是我得到了這個完全錯誤的?我聽說人們把身體稱爲塊,根據標準,這是一個或多個陳述,但我不確定。
我不知道標準是什麼,似乎有點混亂,但老實說,我從來沒有問題,IE8 +和所有其他的瀏覽器嵌套函數聲明。 – elclanrs 2013-02-15 07:47:14