<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          25個(gè)適用于Web開發(fā)人員有用的JavaScript技巧

          共 6371字,需瀏覽 13分鐘

           ·

          2021-06-19 12:03

          英文 | https://betterprogramming.pub/25-useful-javascript-shorthands-for-web-developers-771ac550a7ba
          翻譯 | 楊小二

          今天,我將與你分享一系列令人驚嘆的 JavaScript 技巧,它可以使用你的代碼更具可讀性、簡潔性和專業(yè)性。
          在每個(gè)示例中,我首先解決一個(gè)較長形式的任務(wù),你可能也會使用它。然后,我再介紹一種更簡潔的技巧方法來做完全相同的事情。
          現(xiàn)在,讓我們開始吧!

          1、單行 if-else 語句

          const age = 12;let ageGroup;
          // LONG FORMif (age > 18) { ageGroup = "An adult";} else { ageGroup = "A child";}
          // SHORTHANDageGroup = age > 18 ? "An adult" : "A child";

          請記住,這種速記旨在使代碼更簡潔,并在簡單的if-else 語句中保存代碼行,如上面的語句。不要過度使用它,因?yàn)樗鼤档痛a的可讀性!

          2、 空合并

          空合并運(yùn)算符 ?? ,如果左側(cè)未定義,則返回右側(cè)。如果是,則返回左側(cè):

          let maybeSomething;
          // LONG FORMif(maybeSomething){ console.log(maybeSomething)} else { console.log("Nothing found")}
          //SHORTHANDconsole.log(maybeSomething ?? "Nothing found")

          3、可選鏈

          如果你使用運(yùn)算符訪問對象的屬性,但未定義該屬性,則會引發(fā)錯(cuò)誤。這是使用可選鏈接的地方。

          如果你使用可選鏈運(yùn)算符?,并且屬性未定義,返回undefined而不是拋出錯(cuò)誤:

          const student = {  name: "Matt",  age: 27,  address: {    state: "New York"  },};
          // LONG FORMconsole.log(student && student.address && student.address.ZIPCode); // Doesn't exist - Returns undefined
          // SHORTHANDconsole.log(student?.address?.ZIPCode); // Doesn't exist - Returns undefined

          4、將任何值轉(zhuǎn)換為布爾值

          使用雙感嘆號 (!!) 在 JS 中將任何內(nèi)容轉(zhuǎn)換為布爾值。

          !!true    // true!!2       // true!![]      // true!!"Test"  // true
          !!false // false!!0 // false!!"" // false

          5、擴(kuò)展運(yùn)算符

          你可以使用擴(kuò)展運(yùn)算符 (...) 將一個(gè)數(shù)組的元素“擴(kuò)展”到另一個(gè)數(shù)組中。例如,讓我們連接兩個(gè)數(shù)字?jǐn)?shù)組:

          const nums1 = [1, 2, 3];const nums2 = [4, 5, 6];
          // LONG FORMlet newArray = nums1.concat(nums2);
          // SHORTHANDnewArray = [...nums1, ...nums2];

          也可以使用此語法代替將值推送到數(shù)組:

          let numbers = [1, 2, 3];
          // LONGER FORMnumbers.push(4);numbers.push(5);
          // SHORTHANDnumbers = [...numbers, 4, 5];

          6、使用擴(kuò)展運(yùn)算符進(jìn)行解構(gòu)

          你可以使用帶有解構(gòu)的擴(kuò)展運(yùn)算符將剩余元素分配給新變量:

          const student = {  name: "Matt",  age: 23,  city: "Helsinki",  state: "Finland",};
          // LONGER FORMconst name = student.name;const age = student.age;const address = { city: student.city, state: student.state };
          // SHORTHANDconst { name, age, ...address } = student;

          在上面的例子中,city和state屬性被分配給一個(gè)address常量作為剩余部分。

          7、從數(shù)組中刪除重復(fù)項(xiàng)

          const numbers = [1, 1, 20, 3, 3, 3, 9, 9];const uniqueNumbers = [...new Set(numbers)]; // -> [1, 20, 3, 9]

          8、 使用 && 進(jìn)行短路評估

          不必用if語句檢查某事是否為真,你可以使用&&運(yùn)算符:

          var isReady = true;
          function doSomething(){ console.log("Yay!");}
          // LONGER FORMif(isReady){ doSomething();}
          // SHORTHANDisReady && doSomething();

          9、 類固醇的字符串

          你可以通過將字符串包裝在反引號內(nèi)并使用${}來嵌入值來直接將變量嵌入到字符串中:

          const age = 41;const sentence = `I'm ${age} years old`;
          // result: I'm 41 years old

          10、Switch-Case 更短的替代方案

          你可以使用具有與鍵關(guān)聯(lián)的函數(shù)名稱的對象來替換switch語句:

          const num = 3
          // LONGER FORMswitch (num) { case 1: someFunction(); break; case 2: someOtherFunction(); break; case 3: yetAnotherFunction(); break;}
          // SHORTHANDvar cases = { 1: someFunction, 2: someOtherFunction, 3: yetAnotherFunction,};
          cases[num]();

          不,我沒有忘記在cases對象中調(diào)用函數(shù)!

          11、對象屬性分配

          如果你希望對象鍵與值具有相同的名稱,則可以省略對象文字:

          const name = "Luis", city = "Paris", age = 43, favoriteFood = "Spaghetti";
          // LONGER FORMconst person = { name: name, city: city, age: age, favoriteFood: favoriteFood};
          // SHORTHANDconst person = { name, city, age, favoriteFood };

          12、箭頭函數(shù)

          與使用function關(guān)鍵字聲明函數(shù)不同,使用箭頭函數(shù)語法會更清晰:

          // LONGER FORMfunction greetLong(name) {  console.log(`Hi, ${name}`);}
          // SHORTHANDconst greetShort = name => console.log(`Hi, ${name}`);

          注意:在本例中,由于函數(shù)中只有一個(gè)表達(dá)式,你可以省略大括號 ( {})。但是,如果表達(dá)式需要多于一行,則需要使用大括號!

          13、不帶返回關(guān)鍵字返回

          使用箭頭函數(shù)時(shí),如果return函數(shù)中只有一個(gè)表達(dá)式,則可以省略關(guān)鍵字和函數(shù)的花括號:

          // LONGER FORMfunction toPoundsLong(kilos) {  return kilos * 2.205;}
          // SHORTHANDconst toPoundsShort = kilos => kilos * 2.205;

          14、更短的 for 循環(huán)

          for有時(shí)你可能希望使用內(nèi)置forEach()方法更簡潔地循環(huán),而不是在集合上使用循環(huán):

          const numbers = [1, 2, 3, 4, 5];
          // LONGER FORMfor(let i = 0; i < numbers.length; i++){ console.log(numbers[i]);}
          // SHORTHANDnumbers.forEach(number => console.log(number));

          15、 函數(shù)參數(shù)的默認(rèn)值

          在 JavaScript 中,你可以為函數(shù)參數(shù)提供默認(rèn)值,以便可以帶或不帶參數(shù)調(diào)用函數(shù):

          // LONG FORMfunction pickUp(fruit) {  if(fruit === undefined){    console.log("I picked up a Banana");  } else {    console.log(`I picked up a ${fruit}`);  }}
          // SHORTHANDfunction pickUp(fruit = "Banana") { console.log(`I picked up a ${fruit}`)}
          pickUp("Mango"); // -> I picked up a MangopickUp(); // -> I picked up a Banana

          順便說一句,你還可以使用箭頭函數(shù)使其更短!

          const pick = (fruit = "Banana") => console.log(`I picked up a ${fruit}`)

          16、聲明變量

          你可以像這樣巧妙地將變量聲明組合成一行:

          // LONGER FORMlet name;let age;let favoriteFood = "Pizza";
          // SHORTHANDlet name, age, favoriteFood = "Pizza";

          17、 將值放入數(shù)組

          你可以使用Object.values()獲取對象的值并將它們放入數(shù)組而不是循環(huán):

          const info = { name: "Matt", country: "Finland", age: 35 };
          // LONGER FORMlet data = [];for (let key in info) { data.push(info[key]);}
          // SHORTHANDconst data = Object.values(info);

          18、在數(shù)組中查找元素

          使用數(shù)組的內(nèi)置find()方法查找與特定條件匹配的元素,而不是使用冗長的循環(huán):

          const fruits = [  { type: "Banana", color: "Yellow" },  { type: "Apple", color: "Green" }];
          // LONGER FORMlet yellowFruit;for (let i = 0; i < fruits.length; ++i) { if (fruits[i].color === "Yellow") { yellowFruit = fruits[i]; }}
          // SHORTHANDyellowFruit = fruits.find((fruit) => fruit.color === "Yellow");

          19、檢查一個(gè)項(xiàng)目是否在數(shù)組中

          你可以使用 includes() 方法,而不是使用 indexOf() 方法來檢查元素是否在數(shù)組中。

          let numbers = [1, 2, 3];
          // LONGER FORMconst hasNumber1 = numbers.indexOf(1) > -1 // -> True
          // SHORTHAND/CLEANER APPROACHconst hasNumber1 = numbers.includes(1) // -> True

          20、檢查多個(gè)條件

          避免長|| 檢查多個(gè)條件鏈時(shí),你可以使用你剛剛在上一個(gè)技巧中學(xué)到的東西——即,使用 includes() 方法:

          const num = 1;
          // LONGER FORMif(num == 1 || num == 2 || num == 3){ console.log("Yay");}
          // SHORTHANDif([1,2,3].includes(num)){ console.log("Yay");}

          21、使用一行分配多個(gè)值

          你可以使用解構(gòu)來一次性分配多個(gè)值:

          let num1, num2;
          // LONGER FORMnum1 = 10;num2 = 100;
          // SHORTHAND[num1, num2] = [10, 100];

          這也可以在處理對象時(shí)使用:

          student = {  name: "Matt",  age: 29,};
          // LONGER FORMlet name = student.name;let age = student.age;
          // SHORTHANDlet { name, age } = student;

          22、在沒有第三個(gè)變量的情況下交換兩個(gè)變量

          在 JavaScript 中,您可以使用解構(gòu)從數(shù)組中提取值。這也可用于在沒有第三個(gè)幫助程序的情況下交換兩個(gè)變量:

          let x = 1;let y = 2;
          // LONGER FORMlet temp = x;x = y;y = temp;
          // SHORTHAND[x, y] = [y, x];

          23、指數(shù)運(yùn)算符

          你可以使用 ** 運(yùn)算符,而不是使用 Math.pow() 函數(shù)來將數(shù)字求冪:

          // LONGER FORMMath.pow(4,2); // 16Math.pow(2,3); // 8
          // SHORTHAND4**2 // 162**3 // 8

          24、舍入數(shù)字時(shí) Math.floor 的簡寫

          你可以使用 ~~ 運(yùn)算符,而不是使用 Math.floor() 函數(shù)來向下舍入數(shù)字:

          // LONG FORMMath.floor(5.25) // -> 5.0
          // SHORTHAND~~5.25 // -> 5.0

          25、將字符串轉(zhuǎn)換為數(shù)字

          你可以使用一元運(yùn)算符 ( +) 將字符串轉(zhuǎn)換為數(shù)字:

          // LONGER FORMconst num = parseInt("1000");
          // SHORTHANDconst num = +"1000";

          我想將這個(gè)速記包括在列表中,但人們可能會爭論它是否有用,因?yàn)樗鼘?shí)際上看起來有點(diǎn)令人困惑。

          感謝你的閱讀。

          學(xué)習(xí)更多技能

          請點(diǎn)擊下方公眾號

          瀏覽 35
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  九九香蕉视频 | 国产操逼视频免费看 | 内射亚洲美女 | 91在线精品无码秘 入口APP | aaa天堂 |