一文分清var let和const

2021-10-06 19:34:24 字數 1306 閱讀 4608

相信大家在學習剛開始js的時候,接觸var是最多的,通過var來宣告變數,而在往後的學習可能又遇到了let和const,那麼這三個有什麼區別呢?

console.

log(num)

;//輸出 undefined

var num =10;

console.

log(num)

;//輸出 10

// 這裡的**會報錯,cannot access 'num' before initialization

// 在變數初始化前無法訪問

console.

log(num)

;let num =10;

console.

log(num)

;

for

(var i =

0; i <

10; i++

)console.

log(i)

;// 輸出10

for

(let i =

0; i <

10; i++

)console.

log(i)

;// 在這裡會報錯:i is not defined

const宣告的變數,不能重新被指向新的值(不能修改指標的方向)。

const num =10;

num++

;console.

log(num)

;// 報錯:assignment to constant variable 場數變數不能被賦值

那麼我們這樣理解,const宣告的是乙個常量,這個說法是正確的嗎?我們再看看下面的例子

const num =

console.

log(num)

;// 輸出

num.key =11;

console.

log(num.key)

;// 輸出11

console.

log(num)

;// 輸出

很明顯,num的值被改變了,是因為const宣告的變數,不能修改指標的指向,而可以修改指標指向的值,物件的值儲存在堆結構中,而num中會儲存這個物件在堆結構中的16進製制位址,所以在上面例子中,我們並沒有修改物件的位址,而是修改的物件的值,這時候我們就可以修改const儲存的值了。

所以,const宣告的變數,不能修改其指標指向,但可以修改其儲存值。

一文分清強弱 動態靜態型別語言

上文提到前端為何需學習typescript,那麼typescript屬於什麼型別語言呢?看完本文你便能摸索出來 強弱型別語言 強型別語言 當乙個物件從呼叫函式傳遞到被呼叫函式時,其型別必須與被呼叫函式中宣告的型別相容 a b y 強型別語言 不允許改變變數的資料型別,除非進行強制型別轉換 class...

一文搞懂併發和並行

併發和並行是兩個非常容易混淆的概念。它們都可以表示兩個或多個任務一起執行,但是偏重點有點不同。併發偏重於多個任務交替執行,而多個任務之間有可能還是序列的。併發是邏輯上的同時發生 simultaneous 而並行是物理上的同時發生。然而並行的偏重點在於 同時執行 並行 parallel 指在同一時刻,...

一文看懂Git和SVN

git 和 svn 孰優孰好,每個人有不同的體驗。在易用性這方面,svn對於新手來說會更有好一些。但是從另外一方面看,git 命令多意味著功能多,若我們能掌握大部分 git 的功能,體會到其中的奧妙,會發現再也回不去 svn 的時代了。git vs svn git是分布式的,支援離線工作,在本地可以...