關於變數提公升的小小例子

2021-09-26 04:51:15 字數 1205 閱讀 7333

我們首先來看乙個例子:

console.log(a);   // undefined

var a = 'a';

console.log(a); // a

為什麼會呈現undefined這種情況呢?**從上往下看,變數a並未宣告,而我們知道undefined的意思是變數已經宣告,但並未賦值,由此來看,變數a是已宣告但未賦值的狀態,這是為什麼呢?因為預編譯,又稱為預處理,它是做些**文字的替換工作,是整個編譯過程的最先做的工作,它會把所有宣告提公升到頂端。

所以,以上**在執行過程中實際上是這樣的:

var a;

console.log(a); // undefined

a = 'a';

console.log(a); // a

注意:變數宣告的提公升僅僅是宣告提公升了,賦值不會被提公升。

再來看乙個例子:

console.log(num);

num=100;

console.log(num);

var num;

console.log(num);

試試看寫出console.log(num);的結果吧。

上述**在執行過程中實際上是這樣的:

var num;

console.log(num); //undefined

num=100;

console.log(num); //100

console.log(num); //100

你寫對了嗎?

來看最後乙個例子:

console.log(num);

num=100;

console.log(num);

你認為這一例子的console.log(num);結果是什麼呢?

由於變數num未宣告也未賦值,所以第乙個console.log(num);的結果是會報錯:

console.log(num); //error。

那第二個console.log(num);呢?我們都知道程式一旦出現錯誤,將不會再繼續執行,所以你做對了嗎?

(此為第一篇部落格,不足之處,多請海涵。❤)

關於滑動視窗的小小小tip

計算機網路 如果提出來乙個結論 視窗大小 傳送視窗大小 接收視窗大小。不知道會多少人覺得這是在幹啥。對於n位元編號的資料幀,曾經討論過,傳送 視窗 接 收視窗 2n時可以區分新舊輪次。這篇記錄了一點點那天晚上挺煎熬的思考,因為找不到合適的論據,也沒有足夠的抽象能力抽出這樣的結論,所以只能猜測,後來想...

關於js的各種變數提公升機制

js中,傳統宣告變數是var function es6中是let const import。今天說一下前四種的異同。let 和 const letconst都是宣告乙個變數,但是const宣告的變數不允許指標重新指向,且const宣告的時候必須賦值,否則會報錯。變數賦值本質上就是乙個指標指向的過程。...

乙個例子,變數提公升和函式提公升就是這麼簡單!

引擎在讀取js 的過程中,分為兩步。第乙個步驟是整個js 的解析讀取,第二個步驟是執行。在js 執行之前,瀏覽器的解析器在遇到 var 變數名 和function 整個函式 提公升到當前作用域的最前面。1.變數提公升只會提公升變數名的宣告,而不會提公升變數的賦值初始化。2.函式提公升的優先順序大於變...