理解變數提公升

2022-03-06 12:07:59 字數 1371 閱讀 6805

es5提供了兩種變數宣告的方式,分別是var和function。var是變數宣告,function是函式宣告。函式宣告優先於變數宣告,解析器會率先讀取函式宣告,並使其在執行任何**之前可用。

理解乙個過程

程式設計師都知道計算機只能識別0和1,也就是二進位制。那麼計算機是怎麼識別**的呢?計算機執行**前會先將**編譯成二進位制檔案,在執行時這個二進位制檔案會進過乙個解析器,計算機能準確執行解析後的**。

而es5中函式宣告優先於變數宣告正是因為解析器在向執行環境中載入資料時,對函式宣告和變數宣告沒有沒有一視同仁,解析器會率先讀取函式宣告,並使其在執行任何**之前可用。

//提公升前

console.log(sum(5,10)); //輸出15,不報錯

function sum(a,b)

//解析器解析後**執行順序,函式宣告被提公升。

function sum(a,b)

console.log(sum(a,b));

//提公升前

console.log(a); //undefined

var a=10;

//提公升後

var a; //變數只宣告未賦值,變數值初始化為undefined,這是輸出undefined的原因

console.log(a); //undefined

a = 10; //變數在『原地』賦值,即賦值沒提公升

宣告後為初始化的變數會儲存乙個特殊的值——undefined.

//提公升前

log(); //"hello world!"

var a = 10;

console.log(a); //10

console.log(b); //undefined

var b = 20;

function log()

console.log(b); //20

//提公升後

function log()

var a;

var b;

log(); //"hello world"

a = 10;

console.log(a); //10

console.log(b); //undefined

b = 20;

console.log(b); //

理解變數提公升

基礎賦值提公升 console.log a var a 1 輸出 undefined 相當於 var a console.log a a 1 在 中使用 var 來宣告變數的時候,會提到當前作用域的頂端,而賦值操作在原處不變。var a宣告向上提公升,a 1賦值留在原處。不使用var賦值 conso...

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

下面我們來看兩個例子 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中建立函式有兩種方式 函式宣告式和函式字面量式。只有函式宣告才...