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

2022-02-15 06:20:03 字數 576 閱讀 5022

js在執行之前會進行預解析。

什麼叫預解析?

預:提前

解析:編譯

預解析通俗的說:js在執行**之前會讀取js**,會將變數宣告提前。

注意:只是提公升變數,並不是提公升變數賦值。

對於es6中的let不具體 變數提公升。

例子:

1
如上**不並不會報錯,因為在之前js**之前,在預解析的時候,顯示宣告的函式 test 會宣告提前。也就是當前作用域中的變數物件已經存在了函式test。所以不會報錯。

對於函式的宣告的 提公升只是針對顯示宣告的函式,對於函式表示式沒有這個提公升。

1

a();

2var a=()=>

如上用var 宣告a,提公升了變數但是在預解析的時候a的值是undefined 並不是函式所以會報a is not a function,變數的宣告提前並不是賦值提前!!

函式表示式遵循的是先宣告在呼叫的原則。

var a=()=>; a();

預解析和變數提公升

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複習 05 函式 預解析(變數提公升)

定義階段 1.宣告式函式 function fn 2.賦值式函式 var fun function 呼叫階段 宣告式函式可以在宣告之前呼叫,也可以在宣告之後呼叫 賦值式函式只能在宣告之後呼叫 1.開闢乙個儲存空間 2.把函式體內的 一模一樣的儲存在這個空間中 不解析變數 3.把空間的位址給到變數名 ...

預解析 變數提公升 相關題

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