精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

作為前端工程師,你應該了解的十個 JavaScript 技巧

開發 前端
過去我寫了很多垃圾代碼,現在看起來很糟糕。當我再次看到那些代碼片段時,我什至懷疑自己是否適合做一名程序員。

前言

過去我寫了很多垃圾代碼,現在看起來很糟糕。當我再次看到那些代碼片段時,我什至懷疑自己是否適合做一名程序員。

因此,今天我想跟你分享 10 個關于 JavaScript的小技巧,希望可以幫助你避免編寫我曾經寫過的垃圾代碼。

1.Promise回調地獄

Promise 提供了一種優雅的方式來處理 JavaScript 中的異步操作。這也是避免“回調地獄”的解決方案之一。但我不太明白這是什么意思,所以我寫了這段代碼。

我做了這些事情:

  • 首先獲取用戶的基本信息。
  • 按用戶信息獲取所有文章的簡要摘要。
  • 通過文章簡要了解文章詳情。
// ?
getUserInfo()
  .then((userInfo) => {
    getArticles(userInfo)
      .then((articles) => {
        Promise.all(articles.map((article) => getArticleDetail(article)))
          .then((articleDetails) => {
            console.log(articleDetails)
          })
      })
  })

我在這里根本沒有利用 Promise。我們應該像下面的代碼片段一樣處理它:

// ?
getUserInfo()
  .then((getArticles)
  .then((articles) => {
    return Promise.all(articles.map((article) => getArticleDetail(article)))
  })
  .then((articleDetails) => {
    console.log(articleDetails)
  })

2. 不處理錯誤消息

我經常只寫請求成功的代碼邏輯,而忽略請求失敗的代碼邏輯。

// ?
const getUserInfo = async () => {
  try {
    const userInfo = await fetch('/api/getUserInfo')
  } catch (err) {


  }
}

這是缺乏經驗的做法,我們應該給出一個用戶友好的提示,而不是什么也不做。

// ?
const getUserInfo = async () => {
  try {
    const userInfo = await fetch('/api/getUserInfo')
  } catch (err) {
    Toast(err.message)
  }
}

3.為函數設置太多參數。

當一個函數的參數太多時,它的可讀性就會降低,甚至讓我們不知道如何正確地傳遞參數。

舉個例子:

我們想要獲取用戶的一些基本信息,比如姓名、性別、年齡等。

// ?
const getUserInfo = (name, age, weight, gender, mobile , nationality, hobby, address) => {
  // ...
}
getUserInfo('fatfish', 100, 2000, ...)

那太糟了。如果你的同事寫出這樣的代碼,你會毆打他嗎?

事實上,當函數參數過多時,應該使用對象來傳遞所需的信息,這樣其可讀性和可擴展性就會提高。

// ?
const getUserInfo = (options) => {
  const { name, gender, age, mobile, weight, nationality, hobby, address } = options
  // ...
}
getUserInfo({
  name: 'fatfish',
  age: 100,
  weight: 2000
  // ...
})

4.使用幻數

小伙伴們,你們有寫過這樣的代碼嗎?很多地方用數字來進行邏輯判斷似乎很正常。是的,這讓我很困惑 1、2、3 到底是什么意思。

?
// component1.js
if (status === 1 || status === 2) {
  // ...
} else if (status === 3) {
  // ...
}
// component2.js
if (status === 1 || status === 2) {
  // ...
}

我們最好將這些數字定義為常量。

// ?
// constants.js
export const STATUS = {
  // It is an adult and has real-name authentication
  adultRealName: 1,
  // It is a minor and has real-name authentication
  minorRealName: 2,
  // Not real-name authentication
  notRealName: 3,
  // ...
}
// component1.js
import { STATUS } from './constants.js'
if ([ STATUS.adultRealName, STATUS.minorRealName ].includes(status)) {
  // ...
} else if (status === STATUS.notRealName) {
  // ...
}
// component2.js
import { STATUS } from './constants.js'
// component2.js
if ([ STATUS.adultRealName, STATUS.minorRealName ].includes(status)) {
  // ...
}

5.使用.length判斷字符串的長度

大多數時候,我們使用.length,判斷字符串的長度是安全的,但是在表單輸入的情況下要小心使用。

當我們輸入 ?? 時,nameLen 的值為 2 — 這不是很奇怪嗎?

// ?
<input type="text" id="name">
<script>
  const $name = document.getElementById('name')
  $name.addEventListener('blur', () => {
    const name = $name.value
    const nameLen = name.length
    // input: fatfish => nameLen: 7
    // input: ??  => nameLen: 2
    console.log(`name: ${name}, nameLen: ${nameLen}`)
  }, false)
</script>

是的,這是有原因的,你猜怎么著?

// ?
<input type="text" id="name">
<script>
  const $name = document.getElementById('name')
  $name.addEventListener('blur', () => {
    const name = $name.value
    const nameLen = name.length
    const spRegexp = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g
    const nameRealLen = name.replace(spRegexp, '_').length
    // input: fatfish => nameLen: 7, nameRealLen: 7
    // input: ??  => nameLen: 2, nameRealLen: 1
    console.log(`name: ${name}, nameLen: ${nameLen}, nameRealLen: ${nameRealLen}`)
  }, false)
</script>

6.永遠不要寫代碼注釋

我們經常向別人抱怨:“你為什么不寫代碼注釋呢?” 但實際上,我從來沒有寫過!

// ?
const fn = (dpr) => {
  if (dpr >= 2) {
    // ...
  } else {
  }
}

天哪,你知道“dpr”是什么意思嗎?我沒想到這意味著窗口設備PixelRatio。

// ?
// dpr: Please enter a value for window.devicePixelRatio
const fn = (dpr) => {
  if (dpr >= 2) {
    // ...
  } else {
  }
}

7. 無意義的代碼注釋

與其寫無意義的代碼注釋,還不如不寫代碼注釋,因為它浪費你的時間。

你不妨解釋一下“a”的含義或使用有意義的變量名稱!

// ?
let a = 1 // Set the value of "a" to 1

8. 隨機命名

過去,我常常編寫隨機命名變量的尷尬代碼片段。

// ?
const mw = 375

朋友們,請不要向我學習。你應該給變量一個正確且有意義的名稱。

?
const maxWidth = 375

9. 不刪除已棄用的代碼

很多時候,我們的網站會不斷調整功能,有新的和廢棄的功能,但我總是擔心以后會用到它們,所以我只是注釋它們,而不是刪除它們。

其實這種擔心完全沒有必要,因為以后用的可能性很小。即使以后要用到,也可以通過‘git’進行追溯。

10. 一千多行組件代碼

我在一個組件中編寫了一千多行代碼。這太糟糕了,我們應該將組件的功能進一步拆分為更小的組件。

最后

以上就是我今天想與你分享的全部內容,希望對你有用,最后,感謝你的閱讀,如果你覺得不錯的話,請記得關注我,點贊我,這樣你將會閱讀到更多文章內容。

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

2021-10-09 10:50:30

JavaScript編程開發

2014-03-04 09:35:45

JavaScript調試

2022-05-06 13:19:13

JS前端

2021-03-11 09:02:37

SQL數據庫數據

2023-09-26 19:14:57

VS Code插件參數

2017-01-22 12:41:02

CinnamonLinux桌面

2023-10-16 07:55:15

JavaScript對象技巧

2022-10-20 15:12:43

JavaScript技巧開發

2019-05-21 16:19:46

前端性能優化圖片

2024-03-04 16:32:02

JavaScript運算符

2024-04-24 14:52:26

JavaScriptWeb 開發

2023-01-27 15:22:11

JavaScript開發編程語言

2009-07-16 13:28:14

2015-09-17 11:07:57

思維作為前端工程

2009-11-04 10:57:35

2024-12-02 14:28:17

JavaScriptWeb開發

2023-12-15 10:42:05

2024-08-21 08:37:47

CodeEmmet懸浮框

2020-05-26 08:38:57

JavaScript語言

2021-04-30 23:19:04

前端框架工具
點贊
收藏

51CTO技術棧公眾號

国产精品麻豆视频| 国产在线精品免费av| 精品一区二区三区电影| 男女啪啪网站视频| а√天堂在线官网| 国产毛片精品国产一区二区三区| 久久久噜久噜久久综合| 久久精品国产亚洲AV熟女| 外国成人毛片| 欧美日韩精品中文字幕| 亚洲免费久久| 天天av天天翘| 国产一区二区三区免费在线观看| 4p变态网欧美系列| 三级影片在线看| 国产亚洲一卡2卡3卡4卡新区 | 三年中国国语在线播放免费| 欧洲在线视频| 国产精品第一页第二页第三页| 精品国产电影| 999国产精品视频免费| 丝袜美腿亚洲色图| 久久久久久久97| 看黄色录像一级片| 久草成人资源| 亚洲国产日韩欧美在线99| 久久人人爽av| 韩国精品主播一区二区在线观看 | 久久久精品中文字幕麻豆发布| 91在线视频成人| 久久久999久久久| 99伊人成综合| 欧美黄色小视频| 性欧美疯狂猛交69hd| 嫩草影视亚洲| 日韩电影中文字幕在线观看| 女女调教被c哭捆绑喷水百合| 9999精品视频| 51精品久久久久久久蜜臀| 国产一级特黄a大片免费| 午夜影院在线播放| 婷婷久久综合九色综合伊人色| 99热这里只有精品免费| 国产精品久久久久久福利| 欧美激情一区二区在线| 日本一区精品| 久久经典视频| 26uuu国产日韩综合| 国精产品99永久一区一区| 成人免费观看在线视频| 成a人片亚洲日本久久| 7777奇米亚洲综合久久| 999国产精品视频免费| 国模无码大尺度一区二区三区 | 99久久这里有精品| 在线观看91av| 日韩精品aaa| 国产精品一区二区三区av| 69p69国产精品| 色91精品久久久久久久久| 国产精品xxx| 69精品人人人人| 国产男女无遮挡猛进猛出| 日本成人精品| 亚洲国产一区二区三区在线观看| www.88av| av中字幕久久| 久久精品视频在线| 久久久久黄色片| 亚洲国产精品第一区二区三区| 午夜精品国产精品大乳美女| 五月天婷婷久久| 日韩国产欧美在线播放| 成人美女免费网站视频| av中文在线观看| 9人人澡人人爽人人精品| 欧洲亚洲一区二区三区四区五区| eeuss影院在线播放| 亚洲欧美偷拍卡通变态| 亚洲理论电影在线观看| 黑人精品一区| 在线综合+亚洲+欧美中文字幕| 香蕉视频1024| 免费av一区| 性久久久久久| 在线观看亚洲一区| 国产乱码一区二区三区四区| 亚洲国产一区二区三区网站| 亚洲精品久久久久久久久| 色综合99久久久无码国产精品| 91成人超碰| 26uuu另类亚洲欧美日本一| 最近中文字幕在线观看视频| 国产一区二区在线视频| 精品无码久久久久久久动漫| 国产天堂在线| 亚洲一线二线三线久久久| 激情综合在线观看| 国产人与zoxxxx另类91| 国产视频亚洲精品| 91ts人妖另类精品系列| 亚洲精品精选| 91久久久久久久久久久久久| 天堂在线资源8| 亚洲欧洲另类国产综合| 国产精品无码av在线播放| 粉嫩av一区二区三区四区五区| 亚洲成人av在线| 国产成人精品视频免费| 中日韩男男gay无套| 成人一区二区电影| 欧美日本韩国一区二区| 一区二区三区在线免费| 黄色手机在线视频| 亚洲成人一品| 欧美激情在线狂野欧美精品| 91精品人妻一区二区三区果冻| 99久久伊人久久99| 干日本少妇视频| 成人日韩av| 亚洲美女av在线播放| 欧美精品一级片| 精品制服美女丁香| 国产一区二区三区av电影 | 日本道在线观看| 国产在线精品免费av| 五月天国产一区| 色戒汤唯在线| 亚洲大尺度美女在线| 少妇被躁爽到高潮无码文| 日韩国产在线观看| 欧美日韩另类丝袜其他| av在线网页| 日韩精品一区二区三区四区视频| 北条麻妃在线观看视频| 免费观看在线综合| 日本视频一区二区在线观看| 在线人成日本视频| 亚洲国产精品嫩草影院久久| 久久久久黄色片| 国产suv精品一区二区883| 国产对白在线播放| 精品国产伦一区二区三区观看说明| 在线看日韩欧美| 亚洲天天综合网| 国产精品久久久久久亚洲伦| 伊人国产在线视频| 久久激情电影| 成人免费在线网址| 成人免费高清| 麻豆freexxxx性91精品| 亚洲电影在线看| 欧美黑人一级片| 国产成人午夜高潮毛片| 天堂а√在线中文在线 | 91精品一区二区三区在线观看| 国产一二三四视频| 久久精品国产精品亚洲红杏 | 在线免费观看污视频| 国产精品99一区二区| 国产精品中出一区二区三区| 国产盗摄——sm在线视频| 日韩国产精品一区| 日韩欧美成人一区二区三区| 久久久久国产免费免费| 国产精品无码专区av在线播放 | 粉嫩av亚洲一区二区图片| 992tv快乐视频| 99亚洲乱人伦aⅴ精品| 国模视频一区二区| 免费在线观看一级毛片| 欧洲精品在线观看| 免费在线观看黄色小视频| 国产精品亚洲专一区二区三区| 日韩一级片一区二区| 加勒比色老久久爱综合网| 欧美孕妇性xx| 毛片在线视频| 精品处破学生在线二十三| 国产精品100| 国产精品美女一区二区| 波多野结衣三级视频| 中文在线不卡| 杨幂一区欧美专区| 国产精品极品在线观看| 国产精品国内视频| 亚洲妇熟xxxx妇色黄| 日韩禁在线播放| ,一级淫片a看免费| 天天色天天爱天天射综合| 极品尤物一区二区| 成人黄色a**站在线观看| 一区二区在线播放视频| 午夜久久久久| 少妇精品久久久久久久久久| 一区二区三区四区视频免费观看| 日本欧美一级片| av毛片在线| 日韩大陆欧美高清视频区| 在线观看中文字幕2021| 午夜电影一区二区三区| 国产在线观看免费视频软件| 99久久精品免费精品国产| 国产精品区在线| 在线视频精品| 黄色一级大片免费| 久久中文字幕av一区二区不卡| 国产精品av一区| 久久亚洲资源中文字| 2020国产精品视频| 性直播体位视频在线观看| 国产亚洲精品久久久久动| 亚洲精品一区二区三区四区 | 97超碰色婷婷| a视频在线播放| 在线播放精品一区二区三区| 婷婷五月综合久久中文字幕| 欧美一区二区三区影视| a片在线免费观看| 欧美日韩国产区| 九九热这里有精品视频| 成人免费小视频| 亚洲av成人无码久久精品| 91在线精品一区二区| 黑森林av导航| 国产精品99久久久久久久女警| 天天操天天爱天天爽| 久久精品女人天堂| 北条麻妃在线视频观看| 欧美午夜一区| 亚洲精品国产suv一区88| 91久久电影| 亚洲欧美丝袜| 色欧美自拍视频| 五月天久久综合网| 欧美色婷婷久久99精品红桃| 欧美人xxxxx| 无码日韩精品一区二区免费| 国产精品免费一区二区三区观看| 精品一区二区三区中文字幕视频| 国产中文字幕日韩| 91福利精品在线观看| 国产精品久久久久久亚洲影视| 精品3atv在线视频| 国产精品免费久久久久久| 日韩性xxx| 国产成人一区二区三区小说| 国产私拍福利精品视频二区| 国产成人亚洲综合91| japanese23hdxxxx日韩| 国产成人精品免费久久久久 | 9色在线视频| 中文字幕在线看视频国产欧美在线看完整 | 91视频欧美| 97超级碰碰人国产在线观看| 中文在线а√天堂| 国产精品劲爆视频| 日韩电影免费观看高清完整版在线观看| 国产精品入口免费视频一| 婷婷激情成人| 成人资源av| 日韩精品免费一区二区三区竹菊 | 欧美18hd| 欧美精品videossex性护士| 91九色国产在线播放| 欧美亚洲国产精品| 成人精品动漫| 91在线色戒在线| 久草在线综合| 色就是色欧美| 欧美1区免费| 日本日本19xxxⅹhd乱影响| 久久久久久久欧美精品| 色一情一区二区三区| 国产精品性做久久久久久| 国产精品手机在线观看| 久久久国产一区二区三区四区小说| 美国黄色特级片| 一区二区三区日韩精品视频| 韩国av免费观看| 欧美日韩一区二区三区在线看 | 韩国黄色一级大片| 亚洲精品裸体| 色戒在线免费观看| 菠萝蜜视频在线观看一区| 欧美 日韩 国产 成人 在线观看 | 久久艳片www.17c.com| 182在线视频观看| 国产精品老女人精品视频| 日韩精品一区二区三区中文 | 亚洲欧美文学| 国产一级片黄色| 国产精品小仙女| 欧美熟妇激情一区二区三区| 亚洲嫩草精品久久| 亚洲av中文无码乱人伦在线视色| 777xxx欧美| 欧美女优在线| 欧美激情a在线| 日韩黄色在线| 久久久亚洲综合网站| 在线精品国产| 亚洲乱码国产一区三区| 国产91综合一区在线观看| 蜜桃av免费在线观看| 天天综合色天天综合色h| 国产精品无码久久av| 精品无码久久久久久国产| 制服丝袜中文字幕在线| 国产精品一区电影| 偷拍亚洲精品| 国产va亚洲va在线va| 精品在线播放午夜| 亚洲久久久久久久| 亚洲成人一区在线| 国产视频第二页| 一区二区三区国产视频| 在线天堂资源| 精品国产乱码一区二区三区四区| 欧美激情1区2区| 亚洲精品视频三区| 欧美极品美女视频| 国产一区二区视频免费| 亚洲激情小视频| 精品精品导航| 97人摸人人澡人人人超一碰| 久久久久久久久久久久久久| 在线观看高清免费视频| 国产亚洲精品资源在线26u| 日韩欧美国产亚洲| 亚洲国产精品字幕| caoporn-草棚在线视频最| av蓝导航精品导航| 中文字幕一区二区三区欧美日韩| 一级做a免费视频| 《视频一区视频二区| 在线观看一二三区| 日韩在线观看网站| 国产精品久久乐| 亚洲电影一二三区| 美女一区二区视频| 国精品人伦一区二区三区蜜桃| 欧美在线三级电影| 91在线品视觉盛宴免费| 国产精品日韩欧美大师| 日韩免费看片| 极品粉嫩美女露脸啪啪| 亚洲欧洲日韩在线| 国产视频www| 欧美极品在线播放| av男人一区| 国产资源在线视频| 久久久久久久久久久黄色| 草莓视频18免费观看| 中文字幕亚洲无线码a| www.久久99| wwwwww欧美| a亚洲天堂av| 九九九在线观看| 一区二区亚洲欧洲国产日韩| 国产成人精品一区二三区在线观看| 亚洲欧美日韩国产yyy| 国产一区免费电影| 国产精品99无码一区二区| 亚洲精品理论电影| 国精产品一区二区三区有限公司| 日韩色妇久久av| 国产乱子伦一区二区三区国色天香| 免费无遮挡无码永久在线观看视频| 亚洲成av人片在线观看香蕉| 伊人网在线播放| 亚洲一区二区不卡视频| 国产成都精品91一区二区三| 精品国产免费观看| 色久欧美在线视频观看| 一区二区三区自拍视频| 久久久噜噜噜www成人网| 中文欧美字幕免费| 亚洲av无码一区二区乱子伦| 欧美亚洲视频在线观看| 欧美成人milf| 国产十八熟妇av成人一区| 欧美又粗又大又爽| 国产亚av手机在线观看| 欧美一区二区三区精美影视| 激情图片小说一区| 日产精品久久久| 色噜噜狠狠色综合网图区| 国产精品高潮呻吟久久久久 | 风流少妇一区二区| 久久久久99精品成人片我成大片| 社区色欧美激情 | 精品少妇一区| 日本人69视频| 色综合天天综合网天天狠天天| 国产传媒在线播放| 欧美亚洲另类在线一区二区三区 | 国产精品av一区| 蜜桃精品在线观看| 国产一区二区三区影院|