js變數和函式提公升的小結

2022-09-17 09:21:12 字數 509 閱讀 1940

對於變數和函式一起的提公升說法,我比較認同"littlebear"的說法。

比如:

他覺得,是先預編譯變數,先給a賦值undefined,後來預編譯函式,函式a覆蓋了之前的變數a的預設值; 然後**順序執行到a=1;,這個時候賦值表示式給a賦值為1,所以後面輸出都是1。  

我覺得,在同一作用域中,變數和函式宣告的提公升順序和"天天向上中"提到的一樣:【函式形參宣告--->函式宣告---->變數宣告 。任何一種宣告,如果在前面出現,都不會再次宣告。】

這個提公升順序和**的先後順序沒關係。也就是,不管var a=1在function a(){}前面或者後面,都按照上面說的順序來提公升。

a()

var a = c = function()

a()function a()

a();

(function(b)

b()})(a)

c()

JS函式提公升和變數提公升

js引擎在執行整個js 的過程中,分為倆步。第一步是讀取和解析js 第二部是執行。在引擎解析js 的時候,當解析器遇見變數宣告 var 變數名 和函式宣告 function 函式名 的時候,會將這些宣告提到各自作用域的最前面。在es6之前,js是沒有塊級作用域的。只有2種作用域 注 在其他語言中,被...

js中的變數提公升和函式提公升

一,變數提公升 顧名思義,變數提公升就是函式在執行時,會把在下面的變數提公升到函式的top位置,來看栗子 var scope hello function t t 此時輸出的結果是 第乙個輸出undefined 根據作用域鏈,函式內部訪問乙個變數時,會首先在作用域鏈的前端也就是函式內部尋找變數,找到...

js中的變數提公升和函式提公升

從上週開始,我所在的學習小組正式開始了angular的學習,angular是全面支援es6的,所以語法上和以前的angular有了很大的不同,比如變數宣告時就拋棄了var,而選擇了let和const 記得剛開始學習js的時候,使用webstrom時用var,webstrom會在下面畫一條小綠線,表示...