作用域與變數提公升

2022-07-04 23:06:21 字數 1062 閱讀 7772

js中變數的作用域有全域性作用域和區域性作用域兩種,作用域簡單來講就是變數與函式的可訪問範圍。

區域性作用域變數優先於全域性變數,函式只是乙個作用域的基本單位。

例1:

var name = "one";

function test()

test();

console.log(name) //輸出為 two

解析

函式內部省略var,會影響全域性變數,name被重置為全域性變數。js中,函式是乙個作用域的基本單位,函式內宣告的所有變數在函式體內始終是可見的。

例2:

function test() 

}test()();

test()之後將呼叫外層函式test返回內層函式function,再繼續(),相應呼叫執行了內層函式function(),輸出name。

宣告提前是在js預編譯是就進行了,變數提公升知識提公升變數的宣告,並不會吧值也提上來。

例1:

var name = "one" ;

function ()

test();

var name = "one" ;

function ()

test()

解析:

區域性優先於全域性,預編譯(變數提公升),所以函式內的name為區域性變數,所以第乙個位undefine。

function test(name) 

var name = "one"

test(name)

console.log(name) //one

解析:

傳進test的,實際上是乙個副本,函式返回後這個副本就被清除了,並非實際的name。

作用域與變數提公升

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

變數提公升 作用域

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...