JS變數提公升的一些想法

2021-09-17 21:01:29 字數 863 閱讀 3014

專欄剛剛開通, 先把自己以前寫的一些沒人看的答案搬運過來填補一下空白.

變數的問題,莫過於宣告賦值兩個步驟,而這兩個步驟是分開的。

函式宣告被提公升時,宣告和賦值兩個步驟都會被提公升,

而普通變數卻只能提公升宣告步驟,而不能提公升賦值步驟。

變數被提公升過後,先對提公升上來的所有物件統一執行一遍宣告步驟,

然後再對變數執行一次賦值步驟。

而執行賦值步驟時,會優先執行函式變數的賦值步驟,再執行普通變數的賦值步驟。

當你明白這三點後,一切都豁然開朗了。

首先來看乙個demo:

(function();

var a;

alert(typeof a); //function

})();

先提公升兩個a,然後執行函式的賦值步驟,a沒有被賦值,故結果為function

再看乙個:

(function();

var a = 1;

})();

先提公升兩個a,再執行函式的賦值步驟,

因為在alert語句執行以前,還未執行a = 1的賦值步驟,函式不會被覆蓋,故為function

來個最有說服力的:

(function();

alert(typeof a); //number

})();

在alert語句執行之前,a = 1步驟和函式賦值步驟均已執行,

而且函式還在a = 1賦值語句之後,但是仍然輸出number,

就是因為函式的賦值步驟會先於a = 1的賦值步驟,函式被覆蓋,故輸出number。

js 事件委託的一些想法

原生 js 的事件委託可以利用事件冒泡來實現 核心思想是利用 target target 是處於事件目標階段的元素 currenttarget 是註冊了事件的元素 jquery 的 on 方法可以方便的實現事件委託 下面是相關 和小結 個人筆記,較雜亂 add 原生 js 的事件委託實現 windo...

最近一些想法

1.it系統的建設中,當前的方 似乎仍舊沒有足夠重視對目標的認識 這造成的結果,以盲人摸象來形容,實際上是太輕了。今天上街看給小孩玩的電動小象形狀會唱歌但不會動的那種汽車,小孩的媽媽說,咱們去騎小象吧,這給了我乙個認識 我們建模的時候甚至在更早的步驟中進行分析和抽象的時候,往往就是這麼做的。即便不是...

談一些想法

睡不著,做夢驚醒。不知不覺,又是乙個6月8號過去了,如果一切正常的話,應該又有一大批的學弟學妹們走下了考場,滿懷憧憬地準備迎接人生的下乙個十字路口。一年前的我,現在應該坐在家裡,想著我報考什麼學校和專業吧。最開始可能想去北京,報考計算機或者機械,或者別的什麼專業。去年填報志願的時候,人工智慧炒的非常...