宣告提前 hoist

2022-06-25 12:30:16 字數 699 閱讀 8773

程式執行前,都會先找到var宣告的變數和function宣告的函式。

一、var宣告的變數

程式結果

console.log(a);  

var a=10;

console.log(a);

//undefined

// 10

var a=10; 簡寫  被翻譯為  var  a;   a=10;    宣告提前 ——>         

宣告      賦值

所以第乙個輸出a時,a只宣告沒有賦值所以是undefined;  第二次輸出時,a已經被賦值為10,所以輸出10.

二、function宣告的函式

宣告方式:

function 函式名()

fun();

function fun()

fun();

//2//2

這個程式有function宣告的函式,發生宣告提前——>

兩個同名函式遇到了一起。但是js是解釋執行,讀一行執行一行,後督導的同名內容會覆蓋先讀到的同名內容,所以只剩下第二個函式,所以兩次呼叫函式都輸出2.

變數宣告提前與函式宣告提前

變數的宣告提前 在全域性作用域中,使用var關鍵字宣告的變數會在所有的 執行之前被宣告,但是不會賦值。所以我們可以在變數宣告前使用變數。但是不使用var關鍵字宣告的變數不會被宣告提前。在函式作用域中,也具有該特性,使用var關鍵字宣告的變數會在函式所有的 執行前被宣告,如果沒有使用var關鍵字宣告變...

JS宣告提前

js中的宣告提前,變數宣告提前,函式宣告提前,以及宣告提前的順序 console.log a a var a functiona console.log a a 6 a 四個輸出分別是什麼呢?我們來除錯一下,執行到 a 6時輸出如下 最後乙個a 報錯。接下來我們來分析一下原因 一 什麼是變數宣告提前...

變數宣告提前

js中只有2種作用域 全域性作用域和函式作用域,沒有塊級作用域。迴圈內定義的變數,相當於定義在迴圈所在的空間,出了迴圈仍可繼續使用。console.log temp 不會報錯,迴圈體沒有塊級作用域,迴圈內的變數相當於直接宣告在當前 塊的最前面 for var i 0 i 10 i 宣告提前 hois...