簡體   English   中英

JavaScript:與其他變量同名的回調函數參數?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM