歡迎使用我們精選的 JavaScript 技巧集合,它將幫助您優化程式碼、使其更具可讀性並節省您的時間。

讓我們深入研究 JavaScript 的功能和超越傳統的技巧,並發現這種強大的程式語言的全部潛力。

1. 使用!!轉換為布林值

使用雙重否定快速將任何值轉換為布林值。


let truthyValue = !!1; // true let falsyValue = !!0; // false

2. 預設功能參數

設定函數參數的預設值以避免未定義的錯誤。


function greet(name = "Guest") { return `Hello, ${name}!`; }

3. 短 if-else 的三元運算符

if-else語句的簡寫。


let price = 100; let message = price > 50 ? "Expensive" : "Cheap";

4. 動態字串的範本文字

使用模板文字在字串中嵌入表達式。


let item = "coffee"; let price = 15; console.log(`One ${item} costs $${price}.`);

5. 解構賦值

輕鬆從物件或陣列中提取屬性。


let [x, y] = [1, 2]; let {name, age} = {name: "Alice", age: 30};

6. 用於陣列和物件克隆的擴展運算符

克隆陣列或物件而不引用原始陣列或物件。


let originalArray = [1, 2, 3]; let clonedArray = [...originalArray];

7. 短路評估

使用邏輯運算子進行條件執行。


let isValid = true; isValid && console.log("Valid!");

8. 可選連結 (?.)

如果引用為nullish則可以安全地存取巢狀物件屬性,而不會出現錯誤。


let user = {name: "John", address: {city: "New York"}}; console.log(user?.address?.city); // "New York"

9. 空合併運算子 (??)

使用??nullundefined提供預設值。


let username = null; console.log(username ?? "Guest"); // "Guest"

monday.com 的互動式橫幅展示了在數位介面上組織工作流程任務的雙手,並帶有「告訴我如何做」號召性用語按鈕。

10. 使用mapfilterreduce進行陣列操作

無需傳統循環即可處理陣列的優雅方法。


// Map let numbers = [1, 2, 3, 4]; let doubled = numbers.map(x => x * 2); // Filter const evens = numbers.filter(x => x % 2 === 0); // Reduce const sum = numbers.reduce((accumulator, currentValue) => accumulator + currentValue, 0);

11.標記模板文字

使用模板文字進行函數呼叫以進行自訂字串處理。


function highlight(strings, ...values) { return strings.reduce((prev, current, i) => `${prev}${current}${values[i] || ''}`, ''); } let price = 10; console.log(highlight`The price is ${price} dollars.`);

12.使用Object.entries()和Object.fromEntries()

將物件轉換為陣列並返回以方便操作。


let person = {name: "Alice", age: 25}; let entries = Object.entries(person); let newPerson = Object.fromEntries(entries);

13. 唯一元素的集合物件

使用 Set 儲存任何類型的唯一值。


let numbers = [1, 1, 2, 3, 4, 4]; let uniqueNumbers = [...new Set(numbers)];

14. 物件中的動態屬性名稱

在物件文字表示法中使用方括號來建立動態屬性名稱。


let dynamicKey = 'name'; let person = {[dynamicKey]: "Alice"};

15. 使用bind()進行函數柯里化

建立一個新函數,在呼叫時將其 this 關鍵字設定為提供的值。


function multiply(a, b) { return a * b; } let double = multiply.bind(null, 2); console.log(double(5)); // 10

16. 使用 Array.from() 從類別陣列物件建立陣列

將類似陣列或可迭代的物件轉換為真正的陣列。


let nodeList = document.querySelectorAll('div'); let nodeArray = Array.from(nodeList);

17. 可迭代物件的 for...of 循環

直接迭代可迭代物件(包括陣列、映射、集合等)。


for (let value of ['a', 'b', 'c']) { console.log(value); }

18. 使用 Promise.all() 實作並發 Promise

同時執行多個 Promise 並等待所有的都解決。


let promises = [fetch(url1), fetch(url2)]; Promise.all(promises) .then(responses => console.log('All done'));

19. 函數參數的剩餘參數

將任意數量的參數捕獲到陣列中。


function sum(...nums) { return nums.reduce((acc, current) => acc + current, 0); }

Coursera Plus 訂閱產品包括 AWS 基礎、Google IT 支援專業憑證和商業網路安全專業化。

20. 用於性能優化的記憶

儲存函數結果以避免冗餘處理。


const memoize = (fn) => { const cache = {}; return (...args) => { let n = args[0]; // assuming single argument for simplicity if (n in cache) { console.log('Fetching from cache'); return cache[n]; } else { console.log('Calculating result'); let result = fn(n); cache[n] = result; return result; } }; };

21. 使用 ^ 交換值

使用 XOR 以位元運算子交換兩個變數的值,無需使用臨時變數。


let a = 1, b = 2; a ^= b; b ^= a; a ^= b; // a = 2, b = 1

22. 使用 flat() 展平陣列

使用flat()方法輕鬆展平巢狀陣列,並將展平深度作為可選參數。


let nestedArray = [1, [2, [3, [4]]]]; let flatArray = nestedArray.flat(Infinity);

23. 用一元加法轉換為數字

使用一元加運算子快速將字串或其他值轉換為數字。


let str = "123"; let num = +str; // 123 as a number

24. HTML 片段的模板字串

使用模板字串建立 HTML 片段,使動態 HTML 生成更加清晰。


let items = ['apple', 'orange', 'banana']; let html = `<ul>${items.map(item => `<li>${item}</li>`).join('')}</ul>`;

25. 使用 Object.assign() 合併物件

將多個來源物件合併到一個目標物件中,有效地組合它們的屬性。


let obj1 = { a: 1 }, obj2 = { b: 2 }; let merged = Object.assign({}, obj1, obj2);

符合人體工學的垂直滑鼠旨在減輕手腕壓力

使用符合人體工學的滑鼠優化您的編程設置,專為舒適和長時間的編碼會話而定制。

26. 預設值短路

處理潛在的未定義或空變數時,使用邏輯運算子指派預設值。


let options = userOptions || defaultOptions;

27. 使用括號表示法動態存取物件屬性

使用括號表示法動態存取物件的屬性,當屬性名稱儲存在變數中時非常有用。


let property = "name"; let value = person[property]; // Equivalent to person.name

28. 使用 Array.includes() 進行存在檢查

使用includes() 檢查陣列是否包含某個值,它是indexOf 的更清晰的替代方法。


if (myArray.includes("value")) { // Do something }

29. Function.prototype.bind() 的強大功能

將函數綁定到上下文(此值)並部分套用參數,以建立更多可重複使用和模組化的程式碼。


const greet = function(greeting, punctuation) { return `${greeting}, ${this.name}${punctuation}`; }; const greetJohn = greet.bind({name: 'John'}, 'Hello'); console.log(greetJohn('!')); // "Hello, John!"

30.防止物件修改

使用Object.freeze()防止物件進行修改,使其不可變。對於更深層的不變性,請考慮更徹底地強制不變性的函式庫。


let obj = { name: "Immutable" }; Object.freeze(obj); obj.name = "Mutable"; // Fails silently in non-strict mode

我希望這些 JavaScript 技巧為您提供如何進行JavaScript 程式設計的新視角。

從利用模板文字的簡潔功能到掌握mapfilterreduce的效率,這些 JavaScript 技巧將豐富您的開發工作流程並激發您的下一個專案。

讓這些 JavaScript 技巧不僅可以完善您目前的專案,還可以在您的程式設計之旅中激發未來創新的靈感。

支持我們的技術見解

請我喝杯咖啡

透過 PayPal 按鈕捐贈

注意:此頁面上的某些連結可能是附屬連結。如果您透過這些連結進行購買,我可能會賺取少量佣金,而無需您支付額外費用。感謝您的支持!


原文出處:https://dev.to/mmainulhasan/30-javascript-tricky-hacks-gfc


共有 0 則留言