成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

30 個鮮為人知的 JavaScript 技巧,讓你的代碼更具可讀性

開發 前端
在今天這篇文章中,我們為大家精心整理了30個 JavaScript 技巧合集,它將幫助你優化代碼,使其更具可讀性,提升工作效率,并節省你的時間。

在今天這篇文章中,我們為大家精心整理了30個 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 、可選鏈接 (?.)

如果引用為空,則安全地訪問嵌套對象屬性而不會出現錯誤。

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

9 、空值合并運算符 (??)

使用 ?? 為空或未定義提供默認值。

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

10 、使用 map、filter 和 reduce 進行數組操作

無需傳統循環即可優雅地處理數組。

// 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 對象

使用 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 并等待所有 Promise 完成。

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

19 、函數參數的 Rest 參數

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

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

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

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 mod

總結

以上就是我們今天跟你分享的30個JavaScript代碼技巧,希望這些技巧能夠對你有所幫助。


責任編輯:華軒 來源: web前端開發
相關推薦

2019-12-12 20:49:05

JavaScript語言運算符

2024-03-04 16:32:02

JavaScript運算符

2019-06-06 08:48:14

代碼函數編程語言

2017-10-30 15:22:29

代碼可讀性技巧

2023-04-23 15:11:26

2021-01-26 09:18:27

Shell腳本網站

2014-04-22 16:38:12

GitHubGitHub 使用技巧

2022-08-23 14:57:43

Python技巧函數

2022-08-29 00:37:53

Python技巧代碼

2019-11-20 10:54:32

Python數據結構數據庫

2022-05-30 09:01:13

CSS技巧前端

2024-09-10 08:35:57

2021-12-08 23:38:25

Python工具代碼

2016-05-03 10:19:04

H5技巧干貨

2015-08-27 13:11:18

JavaScript代碼

2021-06-15 09:12:19

TypeScriptTypeScript Javascript

2017-11-08 14:55:16

Linux命令sudo

2009-09-14 09:45:20

Chrome谷歌操作系統

2014-07-29 14:25:43

Unix命令

2019-10-08 16:24:33

Chrome瀏覽器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产在线视频一区二区 | 久久久久久国产精品免费免费 | 成年人视频在线免费观看 | 久久一二区 | 自拍视频国产 | caoporon| 久草青青草| 欧美在线视频一区二区 | 国产一区二区三区久久久久久久久 | 亚洲一区二区三区国产 | 五月天国产视频 | 男女午夜免费视频 | 久久久国产精品 | 日韩国产在线观看 | 国产精品美女www爽爽爽 | 日本福利片 | 视频精品一区 | 综合国产 | 一级免费看 | 国产粉嫩尤物极品99综合精品 | 翔田千里一区二区 | 亚洲成人精品国产 | 免费av直接看 | 国产一区久久精品 | 欧美一级免费 | 久久久久国产精品 | 成人不卡| 欧美日韩一区二区三区视频 | 国产精品精品视频 | 亚洲视频国产 | 欧美成人精品在线 | 欧美成人免费在线视频 | 视频一区欧美 | 91久久国产综合久久 | 久久精品久久久 | 国产电影一区二区 | 热久色 | 国产成人亚洲精品 | 一级视频在线免费观看 | 亚洲国产精品久久 | 国产精品免费一区二区 |