1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        20個(gè)實(shí)用而專(zhuān)業(yè)的JavaScript技巧

        共 5536字,需瀏覽 12分鐘

         ·

        2021-08-20 19:09

        英文 | https://javascript.plainenglish.io/20-javascript-tricks-and-shorthands-1fa2576b2261

        翻譯 | 楊小二


        我為你收集了一系列有用的 JavaScript 技巧,讓你的代碼看起來(lái)更優(yōu)雅和專(zhuān)業(yè)。我希望你會(huì)喜歡它!
        1、單線 If-Else
        在 JavaScript 中,你可以使用三元條件運(yùn)算符來(lái)壓縮 if-else 語(yǔ)句。
        例如:
        const age = 10;let group;
        // LONG VERSIONif (age >= 18) { group = "Adult";} else { group = "Child";}
        // SHORTHAND VERSIONgroup = age > 18 ? "Adult" : "Child";

        請(qǐng)記住,這個(gè)簡(jiǎn)寫(xiě)是為了使代碼更簡(jiǎn)潔。只有當(dāng)它清楚地使表達(dá)更容易理解時(shí)才使用它。

        2、空合并

        空合并運(yùn)算符 ?? 如果左側(cè)為空,則返回右側(cè)。否則,它返回左邊的值。這很有用,因?yàn)樗÷粤巳唛L(zhǎng)的 if 檢查。

        空合并的語(yǔ)法是:

        someValue ?? defaultValue

        例如:

        let someValue;
        // LONGER EXPRESSIONif(someValue){ console.log(someValue)} else { console.log("Nothing found")}
        //SHORTHANDconsole.log(someValue ?? "Nothing found")

        輸出:

        Nothing foundNothing found

        3、可選鏈

        在 JavaScript 中,你可以使用點(diǎn)表示法訪問(wèn)對(duì)象的屬性和方法。

        例如:

        fruit.color

        但是,如果你嘗試訪問(wèn)未定義對(duì)象的屬性,你將看到錯(cuò)誤。為避免這種情況,你需要確保在訪問(wèn)其屬性之前定義該對(duì)象:

        const color = fruit && fruit.color;

        但這看起來(lái)并不甜。你可以通過(guò)在點(diǎn)符號(hào)前添加一個(gè)問(wèn)號(hào)來(lái)使用可選鏈接,如下所示:

        const color = fruit?.color;

        讓我們看一個(gè)真實(shí) JS 對(duì)象的例子:

        const student = {  name: "Ann",  age: 22,  address: {    state: "California"  },};
        // LONG FORMconsole.log(student && student.address && student.address.ZIPCode);
        // SHORTHANDconsole.log(student?.address?.ZIPCode);

        輸出:

        undefinedundefined

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

        在 JavaScript 中,你可以將任何內(nèi)容轉(zhuǎn)換為布爾值。這是因?yàn)?,在底層,JavaScript 中的一切要么是“True”,要么是“False”。

        要將任何內(nèi)容轉(zhuǎn)換為布爾值,請(qǐng)使用雙感嘆號(hào) !!。

        例如:

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

        5、傳播

        你可以使用擴(kuò)展運(yùn)算符 ... 將一個(gè)數(shù)組的元素?cái)U(kuò)展到另一個(gè)數(shù)組中。

        例如,讓我們使用擴(kuò)展運(yùn)算符將兩個(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ù)組添加元素時(shí),你還可以將 .push() 方法替換為擴(kuò)展運(yùn)算符。

        例如:

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

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

        你可以使用擴(kuò)展運(yùn)算符 ... 來(lái)解構(gòu)對(duì)象的剩余值。

        為了演示,讓我們創(chuàng)建一個(gè)學(xué)生對(duì)象。讓我們將 name 和 age 屬性分配給變量,并將剩余的屬性分配給第三個(gè)變量:

        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;

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

        你可以通過(guò)將數(shù)組轉(zhuǎn)換為集合,然后將集合中的值添加回?cái)?shù)組來(lái)刪除數(shù)組的重復(fù)項(xiàng)。

        這是有效的,因?yàn)榧鲜俏ㄒ坏捻?xiàng)目集合。

        換句話(huà)說(shuō),一個(gè)集合中不能有兩個(gè)相同的值。因此,將數(shù)組轉(zhuǎn)換為集合會(huì)刪除引擎蓋下的重復(fù)項(xiàng)。

        例如:

        const nums = [1,1,1,1,3,4,5]const uniqueNums = [...new Set(nums)];

        這是實(shí)現(xiàn)其效果的另一種方法:

        const nums = [1,1,1,1,3,4,5]const uniqueNums = Array.from(new Set(nums))

        順便說(shuō)一句,如果你需要一組獨(dú)特的物品,為什么不使用 set 呢?

        8、短路評(píng)估中的 && 運(yùn)算符

        你是否使用 if 檢查來(lái)查看表達(dá)式的計(jì)算結(jié)果是否為真?

        你可以使用短路 && 運(yùn)算符對(duì)速記進(jìn)行相同的操作。

        例如:

        var ready = true;
        function action(){ console.log("Yeah");}
        // LONGER EXPRESSIONif(ready){ action();}
        // SHORTHANDready && action();

        輸出:

        YeahYeah

        9、將值嵌入到字符串中

        你可以通過(guò)將字符串包裝在反引號(hào)內(nèi)并使用 ${} 將變量嵌入到字符串中。

        例如:

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

        這些字符串有時(shí)被稱(chēng)為“類(lèi)固醇字符串”。

        10、對(duì)象屬性分配

        如果你希望對(duì)象鍵與值具有相同的名稱(chēng),則可以省略對(duì)象文字。

        例如:

        const name = "Luis", city = "Paris", age = 43, food = "Spaghetti";
        // LONGER EXPRESSIONlet person = { name: name, city: city, age: age, food: food};
        // SHORTHANDperson = { name, city, age, food };

        11、默認(rèn)值

        在 JavaScript 中,你可以擁有一個(gè)帶有默認(rèn)參數(shù)值的函數(shù)。

        通過(guò)這種方式,你可以在提供或不提供參數(shù)值的情況下調(diào)用該函數(shù)。

        讓我們看一個(gè)例子:

        // LONGER EXPRESSIONfunction pick(fruit) {  if(fruit === undefined){    console.log("I just picked up a Mango");  } else {    console.log(`I just picked up a ${fruit}`);  }}
        // SHORTHANDfunction pick(fruit="Mango") { console.log(`I just picked up a ${fruit}`)}
        pick("Pineapple"); // -> I picked up a Pineapplepick(); // -> I picked up a Mango

        12、一行聲明變量

        你可以將變量聲明合并為一行,而不是每個(gè)聲明使用一行。

        例如:

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

        13、對(duì)象值作為數(shù)組

        使用 Object.values() 方法將一個(gè)對(duì)象的所有值收集到一個(gè)數(shù)組中。

        例如:

        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);

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

        使用內(nèi)置的 find() 方法查找與特定條件匹配的元素。

        例如:

        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");

        15、檢查數(shù)組中的項(xiàng)

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

        例如:

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

        16、多條件檢查

        使用 includes() 方法避免條件鏈。

        例如:

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

        17、用一行代碼分配多個(gè)值

        你可以使用解構(gòu)在一行代碼中分配多個(gè)值。

        例如:

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

        這也適用于對(duì)象:

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

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

        使用解構(gòu)從數(shù)組中提取值。這可以應(yīng)用于在沒(méi)有第三個(gè)的情況下交換兩個(gè)變量。

        例如:

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

        19、 Math.pow() 簡(jiǎn)寫(xiě)

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

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

        20、 Math.floor() 簡(jiǎn)寫(xiě)

        你可以使用 ~~ 運(yùn)算符作為簡(jiǎn)寫(xiě),而不是使用 Math.floor() 函數(shù)來(lái)向下舍入數(shù)字:

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

        寫(xiě)在最后

        感謝你看到這里,希望我今天與你分享的內(nèi)容,能夠?qū)δ阌兴鶐椭?,也希望你喜歡它。

        最后,祝編程快樂(lè)!


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

        請(qǐng)點(diǎn)擊下方公眾號(hào)

        瀏覽 64
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

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

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            男女粗暴进入 | 色五月在线 | 啊啊啊好大好深视频 | 色色色综合网站 | 亚洲一卡二卡在线 | 国产精品毛片A | 儿媳妇把我认成老公 | 久久好色| 免费做人爱高潮1000视频 | 大香蕉一区二区三区 |