預解析 變數提公升 相關題

2021-10-12 10:08:20 字數 1529 閱讀 2837

預解析:瀏覽器在解析js的過程中,至少有兩步,預解析,逐行執行。

預解析: 找一些東西,找var function,把var 和function的宣告提到最前面。

找var:提前宣告一下變數,儲存在記憶體中,如果變數同名宣告一次。

function:提前宣告函式,儲存在記憶體中,如果同名會多次宣告。

逐行執行:所有作用域**在執行之前都會進行預解析。

//找var

console.

log(a)

;//undefined

var a =10;

console.

log(a)

;//10

var a =20;

console.

log(a)

;//20

//找function

console.

log(sum)

;//函式2

function

sum(

) console.

log(sum)

;//函式2

function

sum(

) console.

log(sum)

;//函式2

//普通函式宣告和表示式宣告方式的區別?

add();

//'和'

function

add(

)// addd(); 預解析的時候,變數只宣告,不賦值,undefined

varaddd

=function()

console.

log(c)

;//函式2

var c =10;

functionc(

) console.

log(c)

;//10

var c =20;

functionc(

) console.

log(c)

;//20c(

);//c是20,c()相當於20(),沒有意義(c is not a function)

//區域性作用域預解析

function

sum(

)sum()

;

var x =10;

function

fun1()

fun1()

;//外部先var,找到函式function全部儲存,在函式內部再尋找var,根據作用域鏈來看,會先在內部尋找,再去外部尋找。所以先找到下方的var x=20;

function

fun2

(a)fun2

(100

);

預解析和變數提公升

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 預解析以及變數的提公升

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

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

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