考慮下面的代碼參數:訪問的封閉變量時,該方法具有使用相同的名稱
function() {
var a = "Hello World";
function foo(a) {
alert(a);
}
}
這將打印傳遞給foo
值。
如何訪問閉包中定義的a
變量以便打印「Hello World」?
考慮下面的代碼參數:訪問的封閉變量時,該方法具有使用相同的名稱
function() {
var a = "Hello World";
function foo(a) {
alert(a);
}
}
這將打印傳遞給foo
值。
如何訪問閉包中定義的a
變量以便打印「Hello World」?
你不能,因爲它在函數範圍中被覆蓋。我也不明白爲什麼這樣的構造會有用。至少可以說,這很令人困惑。 只需更改參數或變量名稱即可。
當然。那當然是我做的。我只是想知道這是否可能。謝謝! – 2013-04-07 10:12:32
如果在聲明變量時不使用var
,它將是全局變量,您可以通過window.a
訪問它。如果外部函數綁定到窗口對象,這也可以工作。
順便說一句,如果你有過變量和參數名稱的控制,你更好的名字他們這不是有效的更好的和容易混淆的方式
,你不能有一個匿名函數,除非它的自我執行。 – adeneo 2013-04-07 10:06:06
你所做的有一個正確的名字,叫做[陰影](http://en.wikipedia.org/wiki/Variable_shadowing)。正如其他人指出的那樣,即使是有目的的,也應該避免。 – ZER0 2013-04-07 11:07:26