如何在JavaScript中設置預設參數值

了解如何在JavaScript函數中添加預設參數值 預設參數值在2015年的ES6中引入,並且在現代瀏覽器中被廣泛實現。 這是一個接受param1的doSomething函數。 const doSomething = (param1) => { } 如果在調用函數時沒有指定參數,我們可以為param1添加一個預設值: const doSomething = (param1 = 'test') => { } 當然,這對於更多參數也同樣適用: const doSomething = (param1 = 'test', param2 = 'test2') => { } 如果您有一個帶有參數值的獨特對象呢? 從前,如果我們需要將一個包含選項的對象傳遞給函數,在其中為那些選項提供默認值(如果其中一個未定義),則必須在函數內部添加一些代碼: const colorize = (options) => { if (!options) { options = {} } const color = ('color' in options) ? options.color : 'yellow' ... } 使用解構賦值,您可以提供默認值,這大大簡化了代碼: const colorize = ({ color = 'yellow' }) => { ....

如何在JavaScript中替換字符串中的空格

了解如何使用正則表達式在JavaScript中替換字符串中的所有空格。 替換字符串中的所有空格是非常常見的需求。例如,我最近在一個API端點中使用了這個功能,該端點接收圖像。我使用原始圖像名稱來存儲它,但如果它包含空格,會破壞我的功能(或其他特殊字符,但讓我們專注在空格上)。 所以我研究了如何實現我想要的目標的最佳方法。結果,我需要使用正則表達式! 下面是完整的代碼: const name = 'Hi my name is Flavio'; name.replace(/\s/g, ''); // HimynameisFlavio 在JavaScript正則表達式中,\s 元字符匹配任何空白字符:空格,制表符,換行符和Unicode空格。g 标志告訴JavaScript進行多次替換。如果不加 g,它只會替換第一個出現的空格。 請記住,name 的值不會改變。如果需要,你需要將其賦值給一個新的變量: const name = 'Hi my name is Flavio'; const nameCleaned = name.replace(/\s/g, '');

如何在JavaScript中減慢一個循環的速度

我有一個循環,在該循環中我想要調用一個API多次,例如500次。 API實現了速率限制,即使沒有實現,很快地發送這麼多請求也是不友善的。 所以我想要減慢循環的速度。那該怎麼做? 事實上,這是相當簡單的,一旦你設置了一個sleep()函數,你就不需要進行更改: const sleep = (milliseconds) => { return new Promise(resolve => setTimeout(resolve, milliseconds)) } 然後你可以在每次迭代中調用await sleep(1000)來暫停1秒,像這樣: const list = [1, 2, 3, 4] const doSomething = async () => { for (const item of list) { await sleep(1000) console.log('🦄') } } doSomething()

如何在JavaScript中測試空物件

今天我有需要檢查一個物件是否為空的需求。 由於在JavaScript中,物件是透過參考來進行比較的,因此無法像下面這樣進行簡單的比較: const obj = {} if (obj === {}) { //no } 解決方法是將該物件傳遞給內建的 Object.keys() 方法,然後檢查該物件的建構函式是否為 Object: const obj = {} Object.keys(obj).length === 0 && obj.constructor === Object 重要的是要添加第二個檢查,以避免出現誤報。

如何在JavaScript中等待2個或更多的promise解決

假設你需要啟動2個或更多個promise並等待它們的結果。如何做到這一點呢? 假設你需要將兩個或更多個promise啟動並等待它們的結果。 並且你希望在兩個promise都解決後繼續執行。 你可以使用Promise.all()方法: const promise1 = //... const promise2 = //... const data = await Promise.all([promise1, promise2]) const dataFromPromise1 = data[0] const dataFromPromise2 = data[1] 如果你更喜歡使用純粹的promise而不是使用async/await語法,可以使用以下語法: const promise1 = //... const promise2 = //... Promise.all([promise1, promise2]).then(data => { const dataFromPromise1 = data[0] const dataFromPromise2 = data[1] })

如何在JavaScript中跳出for循环

了解在JavaScript中如何使用不同方法跳出for循环或for..of循环 假设你有一个for循环: const list = ['a', 'b', 'c'] for (let i = 0; i < list.length; i++) { console.log(`${i} ${list[i]}`) } 如果你想在某个特定点跳出循环,比如当你到达元素b时,你可以使用break语句: const list = ['a', 'b', 'c'] for (let i = 0; i < list.length; i++) { console.log(`${i} ${list[i]}`) if (list[i] === 'b') { break } } 你也可以使用break来跳出一个for..of循环: const list = ['a', 'b', 'c'] for (const value of list) { console.log(value) if (value === 'b') { break } } 注意:无法跳出forEach循环,所以(如果需要),请使用for或for....

如何在JavaScript中檢查字串是否以另一字串開頭

在JavaScript中,檢查一個字串是否以另一個子字串開頭是一個常見的需求。下面介紹如何在JavaScript中執行這個檢查。 2015年引入的ES6標準為String原型對象添加了startsWith()方法。 這是在現代JavaScript中執行這個檢查的方法。 這意味著你可以在任何字串上調用startsWith()方法,提供一個子字串作為參數,然後檢查結果是否為true或false: 'testing'.startsWith('test') //true 'going on testing'.startsWith('test') //false 這個方法接受第二個參數,用於指定從哪個字符開始進行檢查: 'testing'.startsWith('test', 2) //false 'going on testing'.startsWith('test', 9) //true

如何在JavaScript中檢查對象是否為空

了解如何檢查變量是否等於空對象 假設你想要檢查一個變量是否等於空對象,可以使用對象字面語法創建空對象: const emptyObject = {} 你要如何做到呢? 使用Object.entries()函數。 它會返回一個包含對象可枚舉屬性的數組。 使用方式如下: Object.entries(objectToCheck) 如果返回一個空數組,則表示該對象沒有任何可枚舉屬性,從而意味著它是空的。 Object.entries(objectToCheck).length === 0 同時,你還應該確保該對象真正是一個對象,通過檢查它的構造函數是否為Object: objectToCheck.constructor === Object 一個常用的庫Lodash可以簡化這個過程,提供了isEmpty()函數: _.isEmpty(objectToCheck)

如何在JavaScript中檢查變數值是否為數字

要如何確定變數值是否為數字呢? 我們有多種方式來檢查變數值是否為數字。 第一種方式是使用isNaN(),這是一個全域變數,在瀏覽器中被分配到window物件: const value = 2; isNaN(value); // false isNaN('test'); // true isNaN({}); // true isNaN(1.2); // false 如果isNaN()返回false,則該值是一個數字。 另一種方式是使用typeof運算子。如果將其應用於數字值,它將返回字串'number': typeof 1; // 'number' const value = 2; typeof value; // 'number' 因此,你可以像這樣進行條件檢查: const value = 2; if (typeof value === 'number') { //它是一個數字 }

如何在JavaScript中獲取兩個日期之間的天數

給定兩個JavaScript的Date對象,我該如何獲取這兩個日期之間的日期(也表示為Date對象)列表? 我曾經遇到這個問題:給定兩個JavaScript的Date對象,我該如何獲取這兩個日期之間的日期(也表示為Date對象)列表? 這裡有一個用於計算日期的函數: 它以兩個日期對象作為參數,並返回一個日期對象的數組: const getDatesBetweenDates = (startDate, endDate) => { let dates = [] // 為了避免修改原始日期 const theDate = new Date(startDate) while (theDate < endDate) { dates = [...dates, new Date(theDate)] theDate.setDate(theDate.getDate() + 1) } return dates } 使用示例: const today = new Date() const threedaysFromNow = new Date(today) threedaysFromNow.setDate(threedaysFromNow.getDate() + 3) getDatesBetweenDates(today, threedaysFromNow) 如果你還想包括起始日期和結束日期,可以使用下面這個版本,在最後添加它們: const getDatesBetweenDates = (startDate, endDate) => { let dates = [] // 為了避免修改原始日期 const theDate = new Date(startDate) while (theDate < endDate) { dates = [....