相信大家在學習剛開始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是分布式的,支援離線工作,在本地可以...