簡體   English   中英

函數參數可以遮蓋全局變量嗎

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

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