function outer(x) {
function inner(y) {
if (y) console.log(y);
else console.log(42);
}
inner(x + 1);
}
outer(5); // expect a logging of '6'
inner(); // expect a Reference Error
我知道它應該做什麼,我期望它能做到這一點,但是在聲明內部函數時我應該知道任何跨瀏覽器的怪癖或副作用。內部函數聲明是否安全?
[編輯]
通過安全我的意思是有可能他們污染全局命名空間或不被視爲是本地的,他們在被宣佈的功能。
[/編輯]
當用作內部函數時,是否將命名函數表達式將函數`inner`的作用域提升爲全局命名空間? – Raynos 2011-01-24 10:15:28
@Raynos:不,IE只是創建兩個函數,而不是一個,但它們保持在同一個範圍內。 – 2011-01-24 10:20:57