JS學習之預解析

2021-10-07 12:32:16 字數 2214 閱讀 8630

<

!doctype html>

"utf-8"

>

js預解析<

/title>

// //情況一

// 報錯,num未定義

// //情況二(坑1)

// console.log(num);//undefined

// var num = 10;

//由於**執行是先解析再執行**

//所以上面的**等價於

// var num;

// console.log(num);

// num = 10;

//由於num在定義時並初始化所以會undefined

// //情況三

// // fn();

// // function fn()//用了自定義函式,即函式關鍵字,所以函式的呼叫用在前後都可以

// //fn();

// 之所以將fn()呼叫放到前面和後面都可以是因為預解析是,

// 將函式調公升到當前函式作用域的最前面,所以與解析式都會先執行fn()函式,並不會呼叫函式

// //情況四(坑2)

// //用函式表示式生明函式

// fun();//出錯,缺少物件

// var fun = function()//fun是變數名

// console.log(22);

// }

// //fun();可以執行

//上面**執行順序相當於

// var fun;//生明函式未給值

// fun();//呼叫未給值的函式一定會報錯

// fun = function()

//函式表示式呼叫必須寫在函式表示式的下面

// 1.js引擎執行js可以分為量兩步:預解析,**執行,

// (1)預解析 js引擎會把js裡面的var 還有function提公升到當前作用域的最前面

// (2)**執行 單招**書寫的順序從上往下執行

// 2.預解析分為 變數預解析(變數提公升)和函式與解析(函式提公升)

// (1)變數提公升 就是把所有的變數提公升到當前的作用域的最前面 不提公升賦值操作

//(2)函式提公升 就是把所有的函式宣告提公升到當前作用域的最前面 不呼叫函式

//案例1:結果是幾

// var num = 10;

// fun();

// function fun()

//相當於執行以下**過程

// var num;

// // 函式沒呼叫,不執行,當執行完fun()之後再執行

// function fun()

// // 先不執行

// num = 10;

// fun();//呼叫函式

//案例2:結果是幾

// var num = 10;

// function fn()

// fn();

// //以上**的執行過程相當於

// var num;

// function fn()

// num = 10;

// fn();

//案例3:

// var a = 10;

// f1();

// function f1()

// 以上**的執行過程為

// var a;

// function f1()

// a = 10;

// f1();

案例4:f1

(); console.

log(c)

; console.

log(b)

; console.

log(a)

;functionf1(

)//以上**執行過程相當於

functionf1(

)f1()

;//之後是全域性變數的輸出,由於a為區域性變數,相當於未被定義過故會報錯

console.

log(c)

;//9

console.

log(b)

;//9

console.

log(a)

;//報錯

<

/script>

<

/head>

<

/body>

<

/html>

JS高階之預解析

提前賦值 預解析結束後,在逐行解讀 console.log a var a 1 解析過程 var a console.log a a 1 console.log b var b 123 functionb 解析過程 var b 函式,在正式執行 前,賦值為整個函式塊 functionb consol...

js學習 一 預解析

js學習 一 預解析 1.js引擎執行js分為兩步 預解析 執行 1 預解析 js引擎將js裡面所有的var和function提公升到當前作用域的最前面 2 執行 按照 書寫的順序從上往下執行 2.預解析分為 變數預解析和函式預解析 1 變數預解析 把所有的變數宣告提公升到當前作用域最前面 不提公升...

JS學習之預解析(執行上下文)

預解析 在一段js 拿過來真正一句一句執行之前,瀏覽器會做一些 準備工作 就是執行上下文 預解析 函式或者變數都會有提前解析的過程,js會把函式或者變數提前解析一下,解析到它們對應的作用域最開始的地方 步驟 1 先找var,function關鍵字以及引數 2 如果找到了var 宣告的變數 引數 會給...