![](/img/trans.png)
[英]Setting a Javascript Private Variable with the same name as a Function Parameter?
[英]JavaScript: callback function parameter with same name as other variable?
var str = 'internet';
performAction(function(str) {
console.log(str);
});
有一個私有變量str
和一個具有相同名稱的參數的回調函數是否有問題?
謝謝!
這只是一個標准的范圍情況 - 它是一個作為參數傳遞給另一個函數的匿名函數表達式並不重要。 請注意,在你的performAction()
函數(你沒有顯示)中,它將無法訪問作為回調函數參數的str
- 如果performAction()
引用str
,它將獲得全局“internet”變量(或者如果定義了它自己的局部str
)。
出於范圍目的,函數的參數與該函數的局部變量相同,這意味着它們從外部作用域屏蔽了同名的其他變量 - 但即使在更廣泛的范圍內定義,仍可以訪問具有不同名稱的變量。
如果你做這樣的事情,它可能會讓人感到困惑:
var str = "internet";
(function(str) {
console.log(str); // "internet"
str = "local param";
console.log(str); // "local param"
})(str);
console.log(str); // "internet"
在那種情況下,我有一個帶有一個名為str
的參數的函數,但是當我調用它時,我正在傳遞一個不同的str
。 請注意,更改該函數中的str
只會更改本地str
而不是全局str
。 它們是兩個不同的變量......
技術上沒有問題。 該函數將記錄當前在范圍內的str
(您的參數)。
出於顯而易見的原因,這不是一個好主意。 至少,它會產生無法讀取的代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.