JS變數作用域

2021-09-24 23:41:54 字數 1523 閱讀 9915

先明確一點:討論作用域,討論的是非物件成員的變數

在函式以及自定義物件之外宣告的變數,具有全域性作用域

1.瀏覽器會建立乙個window物件,window的所有屬性,都具有全域性作用域

2.反過來,具有全域性作用域的變數,都是window的屬性

3.具有全域性作用域的變數,任何位置都可以訪問

通過上面的兩個例子可以看到,js中,沒有**塊作用域。函式中使用var關鍵字宣告的變數,在自己的函式物件可見

**塊中,使用let或const宣告的變數,具有**塊作用域

由於js是解釋型的語言,訪問變數b時出錯,就終止了執行,所以沒有變數c的報錯。

順便提一句,const修飾的變數只能在初始化時被賦值一次。

優先使用「自己的」如果一定要訪問,可以這樣

var b = 1;

function func()

因為具有全域性作用域的變數,所以可以使用物件來限定

優先使用「離自己近的」

js 變數 作用域

一 基本型別與引用型別 針對引用型別值時,複製的只是乙個指標,複製操作結束後,兩個變數實際上將引用同乙個物件 如果是按引用傳遞的話,那麼p就會被自動修改為指向其name屬性為 greg 的新物件,但是由下圖分析可知,引數傳遞是按值傳遞 二 執行環境和作用域 var color blue functi...

js變數作用域 變數提公升

1 js作用域 在es5中,js只有兩種形式的作用域 全域性作用域和函式作用域,在es6中,新增了乙個塊級作用域 最近的大括號涵蓋的範圍 但是僅限於let方式申明的變數。2 變數宣告 1 var x 變數宣告 2var x 1 變數宣告並賦值 3 x 1 定義全域性變數並賦值 3 函式宣告 func...

JS。某變數作用域。

1 var herp one alert herp two 理解塊級作用域。對於js,沒有塊級作用域 區別與其他強型別語言。2 另外,區域性變數在整個函式內都是有定義的,即整個函式體中都隱藏了同名的全域性變數。故 var scope global funtion f alert scope unde...