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

          這些工作中用到的JavaScript小技巧你都知道嗎?

          共 6925字,需瀏覽 14分鐘

           ·

          2021-04-13 10:01


          前言

          初衷: 整理一下工作中常用的JavaScript小技巧分享給大家,希望能幫助到各位小伙伴們,在工作中提升開發(fā)效率。

          適合人群: 前端初級開發(fā),大佬繞道。

          1.函數(shù)參數(shù)默認(rèn)值

          在Es6之前,我們要寫參數(shù)默認(rèn)值的話,還需要在函數(shù)體內(nèi)寫一堆判斷邏輯,而Es6之后新出參數(shù)默認(rèn)值語法,我們來看一下。

          function person(name, age, sex = "male"{
           console.log(name, age, sex) // 蛙人 24 male
          }
          person("蛙人"24)

          2.數(shù)組求和使用reduce

          之前我們都使用for循環(huán)進(jìn)行遍歷求和,也可以使用reduce方法進(jìn)行求和,簡潔代碼。

          let nums = [1,22,31,4,56]
          let sum = nums.reduce((prev, cur) => prev + cur, 0)

          3.廢棄if else

          我們寫判斷時(shí),都會(huì)使用if else但當(dāng)業(yè)務(wù)越來越龐大時(shí)有好幾種狀態(tài)時(shí),這樣代碼太冗余了,我們做一下簡化。

          if(xxx = 1) {
              xxx = "啟用"
          else if(xxx = 2) {
              xxx = "停用"
          }
          // ...省略
          // 廢除以上寫法

          let operation = {
              1"啟用",
              2"停用"
              3"注銷",
              4"修改"
              5"詳情"
          }
          xxx = operation[status] // 代碼簡潔清晰

          4.交換變量

          在Es6之前,我們交互變量值時(shí)得使用第三個(gè)變量,當(dāng)Es6出現(xiàn)解構(gòu)賦值時(shí),我們可以非??焖俚慕粨Q變量。

          let x = 10;
          let y = 20;
          [x, y] = [y, x];

          5.數(shù)組去重

          在Es6之前,我們數(shù)組去重都使用for循環(huán)遍歷或者indexOf等,但Es6出現(xiàn)了Set結(jié)構(gòu),非常便捷。

          不明白Set結(jié)構(gòu)可以看我上一篇文章哦《5分鐘輕松理解數(shù)據(jù)結(jié)構(gòu)Set》

          let arr = [1,1,2,434,2,1]
          console.log([...new Set(arr)]) // 1 2 434

          6.快速獲取URL地址欄參數(shù)

          有時(shí)候我們想獲取地址欄上參數(shù),都是手寫方法,有一個(gè)Api實(shí)用的方法來處理 URL 的查詢字符串。

          let params = new URLSearchParams(location.search);
          params.get("xxx"// 獲取地址欄參數(shù)

          7.生成隨機(jī)Id

          有些情況下我們想要獲取隨機(jī)不重復(fù)的字符串,就可以使用如下方法

          Math.random().toString(36).substr(2)

          8.獲取對象key鍵值

          快速獲取對象的key值

          let person = {name"蛙人"age24};
          console.log(Object.keys(person)) // ["name", "age"]

          9.獲取對象value值

          快速獲取對象的value值

          let person = {name"蛙人"age24};
          console.log(Object.values(person)) // ["蛙人", 24]

          10.模板字符串表達(dá)式

          在Es6之前,我們字符串拼接變量,都是使用 + 號來拼接,這樣拼接還好,要是拼接html標(biāo)簽就非常的難受,稍不注意就報(bào)錯(cuò)符號問題。Es6出現(xiàn)了模板字符串使用 ``,然后${}里面綁定變量,使我們開發(fā)非常的便捷。

          let name = "蛙人"
          console.log(`hello ${name}`)
          console.log(`<p>${name}</p>`)

          11.獲取對象里指定的值

          使用對象解構(gòu)獲取對象值非常簡潔,不用在向傳統(tǒng)那樣使用.語法一個(gè)一個(gè)去獲取

          const person = {name"蛙人"age24sex"male"};
          let { age, sex } = person
          console.log(age, sex) // 24 male

          12.快速將字符串轉(zhuǎn)換為數(shù)組

          不再使用字符串split方法,使用擴(kuò)展運(yùn)算符可以快速轉(zhuǎn)換為數(shù)組。

          let str = "abcdefg"
          console.log([...str]) // ["a", "b", "c", "d", "e", "f", "g"]

          13.使用三目運(yùn)算判斷值

          如果只有兩種狀態(tài)的情況強(qiáng)烈推薦使用三目運(yùn)算,拋棄if else。

          let status = 1;
          status = status == 1 ? "男" : "女"

          14.??運(yùn)算符

          ??運(yùn)算符只有前面的值是undefined才會(huì)執(zhí)行,工作中有的情況下使用,我們來看一下。

          let status = undefined;
          let text = status ?? "暫無"
          console.log(text) // 暫無

          15.?.運(yùn)算符

          ?.運(yùn)算符這在有時(shí)候處理對象時(shí)非常有用,看下面案例,person.name返回undefined然后在調(diào)用toString這時(shí)肯定會(huì)報(bào)錯(cuò),這時(shí)使用?.運(yùn)算符就不會(huì)產(chǎn)生錯(cuò)誤,?.運(yùn)算符是只有在當(dāng)值不是undefined時(shí)才會(huì)調(diào)用toString方法。

          let person = {}
          console.log(person.name.toString()) // 報(bào)錯(cuò)
          console.log(person.name?.toString()) // undefined

          16.~~雙非運(yùn)算符

          ~~雙非運(yùn)算符可以用于向下取整。

          console.log(~~4.3// 4

          17.合并對象

          使用Es6新增方法Object.assign,合并對象如果對象里面有重復(fù)的值,則后面覆蓋前面,可以接收無限參數(shù)。在工作中也是經(jīng)常使用。

          let person = {name"蛙人"age24}
          let obj = Object.assign({}, person)
          console.log(obj) // {name: "蛙人", age: 24}

          18.數(shù)組里的值是否滿足一個(gè)要求

          當(dāng)前方法只要數(shù)組里面有一個(gè)值符合需求,就返回true,否則false。

          let list = [1,2,2,2,2,2]
          let res = list.some(item => item > 1)
          console.log(res) // true

          19.數(shù)組里的值是否都滿足要求

          我們之前使用for遍歷在判斷當(dāng)前數(shù)組里的值是否全符合要求,還要聲明一個(gè)變量來進(jìn)行累計(jì),直接使用every當(dāng)全部滿足需求時(shí)返回true,否則返回false

          let list = [1,2,2,2,2,2]
          let res = list.every(item => item > 1)
          console.log(res) // false

          20.隨機(jī)打亂數(shù)組順序

          有時(shí)我們場景有需要將一個(gè)數(shù)組順序進(jìn)行打亂。

          let list = [1,2,'蛙人'134312]
          let res = list.sort(() => Math.random() - 0.5)
          console.log(res)

          21.事件委托

          之前我們有100個(gè)li元素,都要綁定一個(gè)onclick事件,這樣性能不怎么好,我們可以通過事件委托實(shí)現(xiàn)。

          ul.on("click""li", e => {
             ....省略 操作
          })

          22.檢測值是否為數(shù)組

          let arr = []
          console.log(Array.isArray(arr)) // true
          console.log(Object.toString.call(arr) == ["Object Array"]) // true

          23.偽數(shù)組轉(zhuǎn)換為真數(shù)組

          偽數(shù)組不能調(diào)用真數(shù)組對象上的方法,所以得將偽數(shù)組轉(zhuǎn)換為真數(shù)組,獲取js元素是偽數(shù)組。

          document.querySelectAll("div"// NodeList[div, div, div, div]
          [...document.querySelectorAll('div')] // 轉(zhuǎn)換為真數(shù)組
          Array.from(document.querySelectorAll('div')) // 轉(zhuǎn)換為真數(shù)組

          24.快速獲取時(shí)間戳

          console.log(+ new Date())
          console.log(Date.now())

          25.獲取一個(gè)值的下標(biāo)

          在Es6之前,我們只知道使用indexOf方法去獲取下標(biāo),Es6之后還有一個(gè)方法哦,如果找到該值返回當(dāng)前值的下標(biāo),找不到返回 -1

          let colors = ["red""blue""green"]
          function getIndex(val{
              return colors.findIndex(i => i == val)
          }
          getIndex("blue"// 1

          26.數(shù)組轉(zhuǎn)換為對象

          在有的情況需要將數(shù)組轉(zhuǎn)換為對象,可以這樣做。

          let person = ["蛙人", 24, "male"]
          let obj = {}
          person.forEach(item => (obj[item] = item))

          27.是否為奇偶數(shù)

          let num = val => val % 2 == 0;
          num(10// ture 偶數(shù)
          num(1// false 奇數(shù)

          28.檢測當(dāng)前頁面是否被隱藏

          監(jiān)測當(dāng)前頁面是否被隱藏,當(dāng)切換頁面時(shí)顯示true, false就是打開狀態(tài)。一般在工作用主要用到用戶在頁面停留了多長時(shí)間。

          document.addEventListener("visibilitychange"function({
             console.log(document.hidden);
          });

          29.去除當(dāng)前數(shù)組里的false值

          把數(shù)組里面的假值過濾掉。

          let list = [""false1nullundefined"蛙人"24]
          let res = item => item.filter(Boolean)
          console.log(res(list))

          30.this指向

          有時(shí)我們不想this是這個(gè)值,所以就要改變this指向,改變this指向有很多種,箭頭函數(shù)bind、applycall、我這里就演示一種,小伙伴可以根據(jù)不同業(yè)務(wù)場景來選擇使用哪種方法!

          let person = {name"蛙人"}
          ul.onclick = (function(e{
              console.log(this.name )
          }).bind(person)

          31.判斷地址是否有效

          function IsUrl(val{
              try {
               if (new URL(val)) {
                   return true        
                  }
              } catch(e) {
               return false
              }
          }
          IsUrl("https://www.baidu.cn"// true
          IsUrl("www.baidu.cn"// false

          32.使用Map使數(shù)組直接返回結(jié)果

          有時(shí)我們處理數(shù)組時(shí),想直接返回處理完的結(jié)果,而不是在重新組合一個(gè)數(shù)組,這時(shí)Map就登場了。

          let person = [10, 20, 30]
          function fn(item) {
          return item + 1
          }
          let res = person.map(fn)
          console.log(res) // [11, 21, 31]

          感謝

          謝謝各位在百忙之中點(diǎn)開這篇文章,希望對你們能有所幫助,如有問題歡迎各位大佬指正。

          瀏覽 72
          點(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>
                  中国美女一级黄片 | 久久婷婷婷 | 美女抽插网站 | 十八毛片 | 天天干无码 |