![](/img/trans.png)
[英]Javascript concerns of using 'var' on an already-existing variable
[英]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.