_ 占位符
你問到了一個在現代 JavaScript 中非常常見且實用的語法習慣!
詳細解釋
Array.from(arrayLike, mapFn) :Array.from 是一個靜態方法,可以用來從一個「類陣列物件」(array-like object) 或「可迭代物件」(iterable object) 創建一個新的、真正的陣列。 它接受第二個可選參數 mapFn,這是一個映射函式 (map function)。Array.from 會對創建的新陣列中的 每一個元素 都執行一次這個函式,並用函式的回傳值來替換該元素。
{ length: 24 } :這是一個「類陣列物件」。它不是一個真正的陣列,但它有一個 length 屬性,所以 Array.from 知道要創建一個包含 24 個元素的陣列。 在這一刻,這個新創建的陣列是 [undefined, undefined, ..., undefined] (總共 24 個)。
(_, i) => ${String(i).padStart(2, '0')}:00`` :這就是那個 mapFn 映射函式。Array.from 在遍歷那個長度為 24 的新陣列時,會為每個位置呼叫這個函式。 這個映射函式會接收 兩個參數 :第一個參數 :是陣列中當前元素的值 。因為我們的陣列是 [undefined, undefined, ...],所以這個參數永遠都是 undefined 。第二個參數 :是陣列中當前元素的索引 (index),從 0 到 23。
我們在程式碼邏輯中, 只需要 用到第二個參數 i (索引),來產生 '00:00', '01:00', '02:00'... 這樣的字串。我們 完全不需要 用到第一個參數(那個永遠是 undefined 的值)。
其他範例
const myArray = ['a', 'b', 'c'];myArray.forEach((_, index) => {
console.log(`第 ${index + 1} 個項目`);
});
fetchSomeData().then(_ => {
// 我不在乎 fetchSomeData 回傳了什麼,
// 我只想在它完成後執行這段程式碼。
showLoadingSpinner = false;
});
const coordinates = [10, 20, 30];
const [x, _, z] = coordinates; // 我只想要 x 和 z,忽略掉 y
console.log(x); // 10
console.log(z); // 30
留言
張貼留言