JS 宣告提公升

2021-09-02 08:00:14 字數 1534 閱讀 1904

一:js解析機制

遇到 script 標籤的話 js 就進行預解析,將變數 var 和 function 宣告提公升,但不會執行 function,然後就進入上下文執行,上下文執行還是執行預解析同樣操作,直到沒有 var 和 function,就開始執行上下文。

二:宣告提公升

函式宣告和變數宣告總是會被直譯器悄悄地被"提公升"到方法體的最頂部。

三:函式宣告提公升

a=5

; show

();

vara;

function

show

(){};

預解析:

function

show

(){};

// 函式的宣告

vara;

// 變數的宣告 a

=5;

show

();

注意:

需要注意都是

函式宣告

提公升直接把整個函式提到

執行環境的最頂端。

除了以上的函式宣告方式外,還可以使用匿名函式的方式。使用匿名函式的方式不存在函式提公升

,因為函式名稱使用變數表示的,只存在變數提公升

var

getname

=function()

function

getname()

getname

();// 2

預解析:

//函式、變數宣告提公升後

function

getname()

vargetname

;//變數宣告提公升

getname

=function()

getname

();// 最終輸出:2

四:變數宣告提公升:

x=5;

elem=document.getelementbyid("demo");

elem.innerhtml=x; // 使用後宣告

var x;

//    預解析:

var x;

x=5;

elem=document.getelementbyid("demo");

elem.innerhtml=x;

var a=7;

console.log("++++++++++a",a)

console.log("++++++++++b",b) // undefined;因為只是 變數宣告提公升,初始化沒有提公升

var b=7;

//    預解析:

var a=7;

var b;

console.log("++++++++++a",a)

console.log("++++++++++b",b) // undefined(宣告無初始化);因為只是 變數宣告提公升,初始化沒有提公升

b=7;

JS變數宣告提公升

js的變數作用域是離它最近的封閉語塊或 塊,包含他們內部的函式.在 塊中宣告會被隱式的提公升到封閉函式的頂部 1 function 6 var y 1 7 上面的 會被js解釋成下面的格式 1 function 8 有時候我們會不小心的在函式內部重新宣告了已有的變數 function text x ...

JS變數宣告和函式宣告提公升

很多時候,在直覺上,我們都會認為js 在執行時都是自上而下一行一行執行的,但是實際上,有一種情況會導致這個假設是錯誤的。a 2 var a console.log a 按照傳統眼光,console.log a 輸出的應該是undefined,因為var a在a 2之後。但是,輸出的是2。再看第二段 ...

JS函式和宣告提公升

目錄語法 function 函式名 形參1,形參2,匿名函式 var f1 function 形參1,形參2,f1 1,2 立即執行函式 function a,b 1,2 在函式體內通過arguments物件來訪問引數陣列,從而獲取傳給函式的每個引數。可以通過索引取到引數。function add ...