1console.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 解析 ...