[英]Can a function argument shadow a global variable
我在.js文件中定義了一個全局變量。
如果我的函數具有與全局變量同名的參數,則該函數無法初始化全局變量:
var myvar;
function init(myvar){
myvar= myvar;
}
但是,如果我更改變量名稱,以便全局變量和參數具有不同的名稱,則該函數可以初始化全局變量:
var myvar2;
function init(myvar){
myvar2= myvar;
}
(然后正確初始化myvar2
)。
為什么會這樣呢? javascript不允許在相同范圍內使用兩個具有相同名稱的變量,因此正在發生變量隱藏?
我認為js引擎將能夠以與Java相同的方式來區分方法范圍和全局范圍(盡管使用this關鍵字)
那是對的; 全局變量被遮蓋。 想一想。 在此語句中:
myvar = myvar;
如果沒有陰影,哪個myvar
將是全局myvar
,哪個是局部myvar
?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.