Js變數定義 fn裡 var與不var的區別

2022-05-02 13:51:09 字數 548 閱讀 7401

js執行時內建了乙個global物件。

這個global物件跟執行環境有關。在瀏覽器執行環境中。global就是window物件。

在nodejs中。global物件是global物件。

當你在瀏覽器環境中,直接使用乙個未經定義的變數,

例如foo=123;那麼foo這個變數自動宣告為全域性變數。變數引用自動掛載到了global物件,即window物件上,使用上等同於全域性物件的屬性,你可以試試來驗證。

如:

在全域性物件下定義的函式體裡,不用var宣告的變數,首先,它會嘗試在當前作用域鏈(如在方法中宣告,則當前作用域鏈代表全域性作用域和方法區域性作用域etc。。。)中解析 該變數; 如果在任何當前作用域鏈中找到該變數,則會執行對該變數賦值; 如果沒有找到該變數,它才會在全域性物件(即當前作用域鏈的最頂層物件,如window物件)中定義該變數為全域性變數並賦值。

測試**如下:

所以建議各位在fn裡要記住定義區域性變數要var,全域性變數不要var(要注意作用域鏈中不存在同名變數)。

JS中let與var定義變數的不同

let比var要嚴格。1.宣告後未賦值,表現相同。2.使用未宣告的變數,表現不同。var 輸出undefined let 直接報錯 3.重複宣告乙個變數時,表現不同 var 輸出內容 let 直接報錯 4.變數作用範圍,表現不同 使用 重複宣告 var 輸出 內部宣告的變數 let 輸出 外部宣告的...

JS 變數帶var與不帶var的區別

1.看下列 帶var console.log a undefined 變數提公升 宣告時還未賦值 console.log window.a undefined 下面檢測結果中說明window下有這個屬性 但是沒有賦值 檢測a屬性是否在window物件中 console.log a in window...

js中定義變數加var和不加var的區別

這個問題其實我在面試的時候有被問到過,當時我記得我回答的很模糊,面試官看到我好像不太清楚,又問我是不是可以不加var定義變數。正好昨天做專案的時候想到這個問題,覺得這種細節上的問題才是拉開差距的。js中定義變數有兩種情況 注意在方法外不加var定義變數需對其進行賦值,否則出現xx is not de...