變數提公升以及作用域

2022-06-22 03:54:12 字數 454 閱讀 1491

1

console.log(v1);

2var v1 = 100;

3function

foo()

8foo();

9console.log(v1);

10//

undefined undefined 200 100

一共有四次列印的動作,分別來看:

第一次列印,由於存在變數提公升,第二句中的var v1=100會被提到頂部進行宣告,變成var v1; 只宣告未定義,當然是undefined。

第二次列印,是由於第八句呼叫了foo函式,進入foo會發現和第一條情況一樣,不再贅述。

第三次列印,在本句話之前有宣告有定義,此時v1=200,列印200。

第四次列印,由於函式內部所宣告和定義的變數是區域性變數,顧名思義就是不能拿出來用,而全域性變數在第二句就定義好了,所以呢,值為100。

變數提公升 作用域

console.log a undefined console.log window.a undefined console.log a in window true 在變數提公升階段,在全域性作用域中宣告了乙個變數a,此時就已經把a當做屬性賦值給window了,只不過此時還沒有給a賦值,預設值un...

js變數作用域 變數提公升

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

作用域與變數提公升

js中變數的作用域有全域性作用域和區域性作用域兩種,作用域簡單來講就是變數與函式的可訪問範圍。宣告提前是在js預編譯是就進行了,變數提公升知識提公升變數的宣告,並不會吧值也提上來。例1 var name one function test var name one function test 解析 ...