簡體   English   中英

Javascript Shadowing-如果您嘗試使用VAR關鍵字更改不存在的全局變量而產生的影響

[英]Javascript Shadowing - Effect if you try to change an already existing global variable w/o using the VAR keyword

因此,我知道聲明不帶var關鍵字的變量意味着它是在全局范圍內聲明的。

因此,在下面的第一個示例中,代碼的第4行將全局變量person (在其前面沒有var關鍵字)從“ Jim”更改為“ Andrew”。

var person = "Jim";

function whosGotTheFunc() {
   person = "Andrew";
}

person = "Nick";
whosGotTheFunc();
console.log(person);

在第二個示例中,代碼的第4行創建了一個單獨的局部變量,也稱為person

var person = "Jim";

function whosGotTheFunc() {
   var person = "Andrew";
}

person = "Nick";
whosGotTheFunc();
console.log(person);

但是,兩個示例的第7行做什么? 這行代碼說: person =“ Nick”;

Treehouse測驗詢問要記錄到控制台的內容。 在示例#1中,第4行將全局變量person更改為“ Andrew”,但是第7行不會影響該全局變量(因此控制台記錄了“ Andrew”)...但是,在示例#2中,第4行創建了一個局部變量,實際上,第7行​​確實將全局變量的值從“ Jim”更改為“ Nick”(控制台日志為“ Nick”)。

我想知道的是在兩個示例中, 為什么第7行的行為不同:person =“ Nick” ???

在兩個示例中均修改了該變量。 但是,對whosGotTheFunc()的調用是全局修改之后進行的,因此在第一個示例中,它將覆蓋“ Nick”的值,而將其保留為“ Andrew”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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