JavaScript 的閉包(Closure)
閉包就是內部函式能夠取得函式外部的變數,並且記住這個變數。
閉包就是內部函式能夠取得函式外部的變數,並且記住這個變數。
提升是形容 JavaScript 編譯階段將變數和函式的宣告存入記憶體的概念。
作用域就像是範圍的概念,可以分成全域、函式作用域和塊級作用域。
因為二進位制 + 電腦記憶體有限,所以 0.1 + 0.2 = 0.30000000000000004。
Map/WeakMap 是類似於 Object 的資料結構;Set/WeakSet 的資料結構則類似於陣列。
Map 是 ES6 新增的語法,所以在 ES6 之前,Object 一直被當作 Map 來使用。
JavaScript 有原生值和物件兩大資料型別。原生值包含 String、Boolean、Number、BigInt、Undefined、Null 和 Symbol;物件則包含 Array、Function 和 Objects。
null 可以理解為沒有;undefined 可以理解為尚未;undeclared 則是指從未被宣告過。
== 會強制轉換型別與值;=== 不會強制轉換型別與值;Object.is()會比較兩個值是不是相等。
var、let 和 const 都是在 JavaScript 用來做變數宣告的保留字,早期原本只有 var,直到 ES6 後才加入了 let 和 const。
在 JavaScript 中,原型(prototype)是物件導向程式語言中非常重要的概念,它們是 JavaScript 中實現繼承和屬性共享的關鍵。
在 JavaScript 中,this 的值是動態的,通常會由被呼叫的函式來決定。所以,影響 this 的值不是宣告的時機,關鍵在於在哪裡被調用。
splice 用於修改原陣列,可以進行插入、刪除或同時進行;slice 用於提取陣列或字串的部分,並返回新陣列或字串,且不改變原內容;split 會將字串依照指定分隔符號切分為新的陣列,原字串則保持不變。