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

          7 個(gè)有用的 JavaScript 技巧和技巧

          共 3711字,需瀏覽 8分鐘

           ·

          2021-06-13 11:39


          英文 | https://javascript.plainenglish.io/7-useful-javascript-tricks-and-tips-fdf92dd9b869
          翻譯 | 楊小二

          在本文中,我收集了一些關(guān)于JavaScript 技巧和竅門,我相信它們可以讓你成為更好的 JavaScript 開發(fā)人員。沒有特別的順序,這里一共收集整理了7個(gè) JavaScript 技巧!

          1、轉(zhuǎn)換為數(shù)字

          JavaScript 是一種松散類型語言,這意味著我們不必明確指定變量的類型。JavaScript 還可以根據(jù)使用上下文自由地將值轉(zhuǎn)換為類型。
          將值轉(zhuǎn)換為數(shù)字,尤其是將字符串轉(zhuǎn)換為數(shù)字,是一個(gè)常見的要求,可以使用許多方法。

          一元 + 運(yùn)算符

          將字符串類型轉(zhuǎn)換為數(shù)字的最簡(jiǎn)潔方法是一元運(yùn)算符:+
          +"42" // 42

          一元運(yùn)算是只有一個(gè)操作數(shù)的運(yùn)算。該操作數(shù)出現(xiàn)在運(yùn)算符之前或之后。

          一元加號(hào)運(yùn)算符位于其操作數(shù)之前并計(jì)算其操作數(shù),但如果尚未將其轉(zhuǎn)換為數(shù)字,則會(huì)嘗試將其轉(zhuǎn)換為數(shù)字。

          以下是它的行為方式的更多示例:

          +true // 1 +false // 0 +null // 0

          但是,如果我們想在我們的代碼中更加明確怎么辦?

          數(shù)字

          Number是一個(gè)原始包裝對(duì)象,用于表示和操作數(shù)字。當(dāng)用作函數(shù)時(shí),Number(value)將字符串或其他值轉(zhuǎn)換為數(shù)字類型。如果該值無法轉(zhuǎn)換,則返回NaN(Not a Number)。

          Number("42") // 42 Number("1.3") // 1.3 Number("tax") // NaN

          解析整數(shù)

          parseInt()接受一個(gè)字符串作為第一個(gè)參數(shù)和一個(gè)字符串將被轉(zhuǎn)換成的基數(shù)。此方法始終返回一個(gè)整數(shù)。

          parseInt("1234", 10) // 1234 parseInt("11 player ", 10) // 11 parseInt("player 2", 10) // NaN parseInt("10.81", 10) // 10

          parseInt()嘗試從不僅包含數(shù)字的字符串中獲取數(shù)字,但如果字符串不以數(shù)字開頭,你將獲得NaN。

          解析浮點(diǎn)數(shù)

          如果我們想保留小數(shù)部分而不僅僅是整數(shù)部分,我們可以使用parseFloat()將字符串作為參數(shù)并返回等效的浮點(diǎn)數(shù)。

          parseFloat("10.42") // 10.42 parseFloat("10.00") // 10

          還有一些方法可以轉(zhuǎn)換為數(shù)字,但這些是更常見的方法。

          2、管理對(duì)象

          解構(gòu)是 ES6 的重要組成部分,您可能會(huì)經(jīng)常使用。它允許我們從對(duì)象中提取數(shù)據(jù),并將提取的數(shù)據(jù)分配給變量:

          const rectangle = { h: 100, w: 200 };const { h, w } = rectangle;

          如果我們想,我們可以重命名變量:

          const { h: height, w: width} = rectangle;console.log(height); // 100

          我們可以做的另一件方便的事情是通過函數(shù)解構(gòu)返回的對(duì)象并選擇我們想要使用的值:

          function getPerson() {  return {    firstName: 'Max',    lastName: 'Best',    age: 42  }}const { age } = getPerson();console.log(age); // 42

          因此,通過解構(gòu),我們可以通過返回一個(gè)對(duì)象并選擇我們想要返回的部分來從函數(shù)中返回多個(gè)值。

          以不可變的方式刪除屬性需要由 spread 的對(duì)應(yīng)方提供的一個(gè)小技巧,rest operator,它用三個(gè)點(diǎn) (...) 寫成,類似于 spread。

          但是,在這種情況下,我們將剩余的屬性分散到一個(gè)新對(duì)象中。

          const { age:_ , …person } = getPerson();console.log(person); // {firstName: “Max”, lastName: “Best”}

          現(xiàn)在該person對(duì)象擁有原始 person 對(duì)象的所有屬性,除了age。

          3、交換兩個(gè)變量

          使用我們?cè)谏弦粋€(gè)技巧中學(xué)到的知識(shí),可以輕松地交換變量:

          let me = "happy", you = "sad";[me, you] = [you, me];// me = "sad", you = "happy"

          上面的代碼創(chuàng)建了一個(gè) [you, me] 數(shù)組,并立即將它們解構(gòu)為相反的變量。

          不再需要臨時(shí)變量了!

          4、 設(shè)置默認(rèn)值

          我們都見過他們。檢查值是否已設(shè)置的無休止的 if 語句。如果我說有更好的方法呢?嗯,這正是我要說的,默認(rèn)值。

          變量

          所述nullish合并運(yùn)算符(?)是返回其右手側(cè)的操作數(shù)時(shí),其左側(cè)操作數(shù)是一個(gè)邏輯運(yùn)算符null或undefined否則返回其左手側(cè)的操作數(shù)。我們可以使用它來設(shè)置默認(rèn)值,例如,當(dāng)我們收到尚未設(shè)置為數(shù)組的列表時(shí):

          const bookList = receivedBooks ?? [];

          參數(shù)

          我們可以使用空合并運(yùn)算符為函數(shù)中的變量設(shè)置默認(rèn)值,但有更好的方法,默認(rèn)參數(shù):

          function calculateArea(width, height = 100) {  return width * height;}
          const area = calculateArea(50);console.log(area); // 5000

          這里我們將默認(rèn)值設(shè)置為height:100。

          對(duì)象

          解構(gòu)對(duì)象時(shí)的另一個(gè)技巧是設(shè)置默認(rèn)值:

          const rectangle = { height: 400 };const { height = 750, width = 500 } = rectangle;console.log(height); // 400?-?comes from rectangle objectconsole.log(width); // 500?-?fallback to default

          ES6 解構(gòu)默認(rèn)值僅在值為undefined時(shí)。

          5、區(qū)間隨機(jī)數(shù)

          有時(shí)我們需要在一個(gè)范圍內(nèi)生成一個(gè)隨機(jī)數(shù)。該Math.random()函數(shù)幫助我們生成一個(gè)隨機(jī)數(shù),然后,我們可以將其轉(zhuǎn)換為我們想要的范圍:

          const randomIntFromInterval = (min, max) => Math.floor(Math.random() * (max — min + 1) + min);

          如果你查看函數(shù)的構(gòu)造方式,還有另一個(gè)技巧可以融入到這個(gè)技巧中。

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

          ES6 中引入的 Set 對(duì)象類型允許你存儲(chǔ)唯一值。與擴(kuò)展運(yùn)算符 (...) 一起,我們可以使用它來創(chuàng)建一個(gè)只有唯一值的新數(shù)組:

          const uniqueArray = [...new Set(array)]

          我們從數(shù)組創(chuàng)建一個(gè)Set,因?yàn)镾et中的每個(gè)值都必須是唯一的,所以,我們刪除了所有重復(fù)項(xiàng)。然后,我們使用擴(kuò)展運(yùn)算符將Set轉(zhuǎn)換回新數(shù)組。

          7、動(dòng)態(tài)屬性名稱

          ES6 為我們帶來了計(jì)算屬性名稱,允許對(duì)象字面量的屬性鍵使用表達(dá)式。通過用括號(hào)包圍鍵[],我們可以使用變量作為屬性鍵:

          const type = "fruit";const item = { [type]: "kiwi"};
          console.log(item); // {fruit: "kiwi"}

          這個(gè)在你希望動(dòng)態(tài)創(chuàng)建密鑰的情況下很有用。

          我們可以使用括號(hào)表示法訪問該值:

          item[type];   // "kiwi"item["fruit"] // "kiwi"

          或使用點(diǎn)符號(hào):

          item.fruit; // "kiwi"

          8、獎(jiǎng)勵(lì)你一個(gè)額外的小技巧

          如果我們想在沒有改變的情況下向數(shù)組添加一個(gè)新項(xiàng)目(我們通常希望避免這種情況),我們可以使用 ES6擴(kuò)展運(yùn)算符和slice創(chuàng)建一個(gè)新數(shù)組:

          const insert = (arr, index, newItem) => [ ...arr.slice(0, index), // first half of array newItem,                // new item ...arr.slice(index)       // rest of array];
          const items = ['S', 'L', 'C', 'E']const result = insert(items, 2, 'I');console.log(result); // ["S", "L", "I", "C", "E"]

          結(jié)論

          我希望,你發(fā)現(xiàn)這些 JavaScript 技巧中的一些有用并且值得添加到您的日常武器庫中。請(qǐng)記住,負(fù)責(zé)任遠(yuǎn)比高效重要。


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

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

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

          手機(jī)掃一掃分享

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

          手機(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>
                  亚洲成人电影三区 | 久草 超碰 | 一级欧美专区 | 精品无码三级在线播放 | 天天操,天天干,天天日 |