變數提公升,函式提公升

2021-10-03 22:52:26 字數 399 閱讀 1298

1,變數提公升及函式提公升

2,函式作用域下的變數提公升和函式提公升

思考:變數提公升和函式提公升是怎麼樣產生的?

1、在js中js引擎會優先解析var變數和function定義!在預解析完成後從上到下逐步進行!

2、解析var變數時,會把值儲存在「執行環境」中,而不會去賦值,值是儲存作用!例如:

alert(a); var a = 2; 這時會輸出undifiend,意思是沒有被初始化沒有被賦值!

這並不是沒有被定義,錯誤了的意思!

3、在解析function時會把函式整體定義,這也就解釋了為什麼在function定義函式時為什麼可以先呼叫後宣告了!其實表面上看是先呼叫了,其實在內部機制中第一步實行的是把以function方式定義的函式先宣告了(預處理)

變數提公升 函式提公升

函式表示式 var fn function fn 函式宣告方式 function fn 我們需要重點注意的是,只有函式宣告形式才能被提公升。變數賦值並沒有被提公升,只是宣告被提公升了。但是,函式的宣告有點不一樣,函式體也會一同被提公升。複製 author laifeipeng date 2019 0...

變數提公升 函式提公升

如果熟悉js 執行的過程,這個問題不難理解 一 變數提公升 es5中沒有塊作用域,有全域性作用域 區域性作用域 函式 等 不宣告定義變數 console.log name 報錯,變數沒有定義 變數提公升 console.log info undefined,不報錯 var info hello fu...

變數提公升, 函式提公升之我見

console.log a undefined var a 1 上先輸出,後宣告,應該輸出 a is not defined 但實際上輸出 a 時,a 沒有報 a is not defined 說明 a 已經被宣告,未被賦值 這種宣告位置被提公升到作用域最高的現象,就是所謂的變數提公升 同時還告訴我...