理解變數提公升

2022-09-09 13:42:28 字數 1709 閱讀 8149

基礎賦值提公升

console.log(a);

var a = 1;//

輸出 undefined

相當於**:

var

a;console.log(a);

a = 1;

在**中使用 var 來宣告變數的時候,會提到當前作用域的頂端,而賦值操作在原處不變。

var a宣告向上提公升,a=1賦值留在原處。

不使用var賦值

console.log(a);  //

referenceerror: a is not defined

console.log(b); //

referenceerror: a is not defined

a = 1;

let b = 1;

控制台報錯,只有使用 var才會變數提公升。

在 if 中提公升

console.log(a) //

undifined

if(false

)

相當於**:

var

aconsole.log(a)

//undifined

if(false

)

多個

<

script

>

console.log(a)

script

>

<

script

>

vara =1

;script

>// 控制台報錯

控制台報錯:referenceerror: a is not defined,

變數提公升不能跨script

函式提公升

console.log(foo);

var foo=10;

console.log(foo);

function

foo()

console.log(foo);

//輸出 function a,10,10

變數宣告會提公升,函式宣告也會,並且函式提公升會優先於變數。

相當於**:

function

a()var

a;console.log(a);

a=10;

console.log(a);

console.log(a);

但是,如果用函式表示式,那就只提公升了這個 a變數,符合之前的變數提公升的邏輯。

a();

var a = function

() //

typeerror: a is not a function

相當於**:

var

aa();

a = function

()

理解變數提公升

es5提供了兩種變數宣告的方式,分別是var和function。var是變數宣告,function是函式宣告。函式宣告優先於變數宣告,解析器會率先讀取函式宣告,並使其在執行任何 之前可用。理解乙個過程 程式設計師都知道計算機只能識別0和1,也就是二進位制。那麼計算機是怎麼識別 的呢?計算機執行 前會...

函式提公升和變數提公升的理解

下面我們來看兩個例子 1.a 2 var a console.log a 這裡你可能會認為輸入的結果是undefined,因為 var a 宣告在 a 2 之後,會把之前的宣告復蓋掉,所以結果是 undefined。但實際上列印的結果會是2 2.console.log a var a 2 鑑於上乙個...

深入理解js的變數提公升和函式提公升

一 變數提公升 在es6中提出了塊級作用域,用var宣告的變數,起作用域應為對整個塊都起作用,所以會跑偏 而且使用var宣告的變數會出現 變數提公升 現象。那麼什麼是變數提公升呢?用以下 直觀感受一下 其執行順序應為 二 函式提公升 js中建立函式有兩種方式 函式宣告式和函式字面量式。只有函式宣告才...