JS複習 05 函式 預解析(變數提公升)

2021-10-14 12:23:17 字數 1863 閱讀 3807

定義階段:

1.宣告式函式

function fn() {}

2.賦值式函式

var fun=function () {}

呼叫階段:

宣告式函式可以在宣告之前呼叫,也可以在宣告之後呼叫

賦值式函式只能在宣告之後呼叫

1.開闢乙個儲存空間

2.把函式體內的**一模一樣的儲存在這個空間中(不解析變數)

3.把空間的位址給到變數名

1.按照函式名儲存的位址找到對應的儲存空間

2.形參賦值

3.預解析

4.把儲存空間內的**拿出來執行一遍(解析變數)

形參:

兩種引數數量一致:一一對應

實參多:前面一一對應,多出來的實參在函式體內沒有變數接受

形參多:前面一一對應,多出來的沒有實參賦值,函式體內使用的時候就是undefined

是在所有的**執行之前對**進行通讀並解釋

1.var關鍵字的時候,告訴瀏覽器變數名可以使用,但沒有賦值

2. 宣告式函式,告訴瀏覽器函式名可以使用,並且這個變數名的值是乙個函式位址

(當函式和變數重名的時候,在預解析階段以函式為準)

預解析的無節操:

1.不管if條件是否成立,**塊裡面的**會進行預解析

2.return後面的**雖然不執行,但是會進行預解析

fn()

var fn=

100fn()

functionfn(

)fn()

預解析:

1.var fn

2.functionfn(

)預解析結束的時候,瀏覽器記錄的fn是乙個函式

**執行:

1.fn()

/把fn當函式執行

2.fn=

100/ 賦值為100,記錄的函式沒有了

3.fn()

/當函式執行 報錯 fn is not a function

4.fn

()

fn()

functionfn(

)fn()

var fn=

100fn()

預解析:

1.functionfn(

)2.var fn

預解析結束的時候,瀏覽器記錄的fn是乙個函式

**執行:

1.fn()

/把fn當函式執行

2.fn()

/當函式執行

3.fn=

100/ 賦值為100,記錄的函式沒有了

4.fn()

/報錯

1.編寫乙個函式,計算三個數字的大小,按照從小到大的順序輸出

functionfn(

)if(arguments[i]

>max)

}for

(var j=

0; j< arguments.length; j++)}

console.

log(min,center,max)}fn

(12,8

,11)

2.判斷區間內的質數

//判斷是不是質數

function

fn(n)

return flag

}}// var res=fn(100)

// console.log(res)

function

fun(a,b)}}

fun(

100,

200)

js 預解析以及變數的提公升

js在執行之前會進行預解析。什麼叫預解析?預 提前 解析 編譯 預解析通俗的說 js在執行 之前會讀取js 會將變數宣告提前。注意 只是提公升變數,並不是提公升變數賦值。對於es6中的let不具體 變數提公升。例子 1如上 不並不會報錯,因為在之前js 之前,在預解析的時候,顯示宣告的函式 test...

預解析和變數提公升

doctype html en utf 8 viewport content width device width,initial scale 1.0 document title head var f functionf console.log f f 123 var fn 123 functio...

預解析 變數提公升 相關題

預解析 瀏覽器在解析js的過程中,至少有兩步,預解析,逐行執行。預解析 找一些東西,找var function,把var 和function的宣告提到最前面。找var 提前宣告一下變數,儲存在記憶體中,如果變數同名宣告一次。function 提前宣告函式,儲存在記憶體中,如果同名會多次宣告。逐行執行...