精品欧美一区二区三区在线观看 _久久久久国色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成人手机在线| 精品人妻伦九区久久aaa片| 欧美在线极品| 国产丝袜欧美中文另类| 国产精品露脸av在线| 国产一二三四区在线| 国产999精品在线观看| 亚洲一区二区三区四区在线观看| 国产日韩精品推荐| 五月婷婷六月婷婷| 欧美成人一品| 亚洲欧美自拍一区| 99精品视频国产| 超碰在线cao| 中文字幕欧美日本乱码一线二线| 97久久天天综合色天天综合色hd | 久久精品人人做人人爽人人| 国产视频福利一区| 久草免费新视频| 伊人久久大香线蕉无限次| 欧美剧在线免费观看网站| 黄页网站在线观看视频| 高清av在线| 成人深夜福利app| 国产精品久久久久久久久借妻| 欧美丰满熟妇bbbbbb| 综合国产视频| 欧美电影免费观看完整版| 男人天堂网视频| 在线观看午夜av| 国产精品久久久久久久午夜片| 国产视频不卡| 国产欧美久久久| 日韩中文字幕区一区有砖一区 | 97天天综合网| 国产精品美女久久久久久久久 | 青青草成人免费在线视频| 成人免费黄色网页| 久久99深爱久久99精品| 欧美影院在线播放| 精品少妇久久久| 91综合在线| 一二美女精品欧洲| 日本一卡二卡在线| 日本免费精品| 91国产视频在线观看| www.男人天堂网| 国产在线更新| 日韩美女视频一区| 天堂精品视频| 国产系列在线观看| 91亚洲男人天堂| 国产精品国产亚洲精品看不卡15 | 91黄色免费版| 国产一二三四五| 日韩伦理在线电影| 国产精品色噜噜| 日韩欧美一区二区视频在线播放| 无码国产精品一区二区免费16| 国产精品综合一区二区| 成人性生交大片免费看小说| 一二区在线观看| 久久成人羞羞网站| 国产精品视频99| 特级西西444www高清大视频| 久久一区中文字幕| 欧美最猛性xxxxx免费| 免费在线观看日韩| 亚洲视频日本| 97在线精品视频| 久久久久久久极品| 性欧美暴力猛交另类hd| 琪琪第一精品导航| 国产成人无码精品久在线观看| 亚洲激情视频| 欧美亚洲国产日韩2020| 亚洲欧美精品一区二区三区| 妖精视频成人观看www| 欧美在线视频观看| 日本网站在线免费观看| 国产亚洲一区在线| 日韩av大片免费看| 国产偷人爽久久久久久老妇app | 91女神在线观看| 日韩成人免费av| 日韩亚洲欧美在线观看| 一个人看的视频www| xxxx日韩| 亚洲欧美日韩精品| 欧美巨胸大乳hitomi| 欧美成免费一区二区视频| 久久影院模特热| 91插插插插插插| 1000部精品久久久久久久久| 777国产偷窥盗摄精品视频| 亚洲不卡在线视频| 久久精品国产一区二区三区免费看| 成人激情视频免费在线| 好男人www在线视频| 国产色产综合产在线视频| 亚洲视频在线观看日本a| 欧美6一10sex性hd| 亚洲一区在线观看视频| 久久久久久久久久久福利| 国产精品美女午夜爽爽| 欧美成人女星排名| 91国模少妇一区二区三区| 欧美gayvideo| 欧美激情在线狂野欧美精品| 国产又粗又猛又黄视频| 国产精品88av| 日韩精品久久久| 视频在线观看入口黄最新永久免费国产 | 激情综合电影网| 国产精品情侣自拍| 青青草原国产免费| 在线免费观看一级片| 国产精品亚洲第一区在线暖暖韩国| 高清不卡一区二区三区| 精品美女视频在线观看免费软件| 综合久久国产九一剧情麻豆| 熟女性饥渴一区二区三区| 国产精品字幕| 精品蜜桃在线看| 国产又大又粗又爽的毛片| 欧美激情第8页| 国产精品亚洲精品| 天天干在线观看| 亚洲三级电影网站| 国产av人人夜夜澡人人爽| 中文久久电影小说| 久久精品国产欧美亚洲人人爽| 国产成人无码精品久久久久| 国产精品自拍网站| 亚洲精品二区| 成人激情综合| 精品亚洲男同gayvideo网站| 久久久久成人精品无码| 精品一区二区在线视频| 972aa.com艺术欧美| 亚洲在线视频免费观看| 亚洲欧洲日产国码无码久久99| 最新亚洲国产| 中日韩美女免费视频网址在线观看| 日本在线视频免费| 国产精品羞羞答答xxdd| 一区二区av| 免费h在线看| 亚洲成人精品在线| 欧美片一区二区| 国产一区二区三区四区五区入口| 日本欧美色综合网站免费| 变态调教一区二区三区| 日韩欧美另类在线| 四虎永久免费地址| 另类的小说在线视频另类成人小视频在线| 欧美在线视频一区二区三区| 性感女国产在线| 日韩精品有码在线观看| 亚洲 欧美 日韩 综合| 99久久精品99国产精品| 久久精品国产99国产精品澳门| 国产91av视频| 成人免费观看av| 欧美一级免费播放| 97品白浆高清久久久久久| 欧美精品在线播放| а√中文在线资源库| 一区二区免费视频| 日本50路肥熟bbw| 亚洲精品少妇| 美女被啪啪一区二区| 无码小电影在线观看网站免费 | 亚洲免费一在线| 99精品视频99| 久久亚洲精精品中文字幕早川悠里 | 亚洲精品18在线观看| 一区二区三区四区视频精品免费 | 中文字幕在线观看视频网站| 久久先锋影音av| 一级片视频免费观看| 97精品97| 国产成人亚洲欧美| 最新中文字幕在线播放| 这里只有精品在线播放| 国产麻豆免费观看| 亚洲午夜久久久| 免费看污黄网站在线观看| 日本女人一区二区三区| 成人免费看片视频在线观看| 狠狠一区二区三区| 97在线视频免费看| 成人动漫在线免费观看| 7777精品伊人久久久大香线蕉的 | 欧美精选视频在线观看| 91免费国产网站| 国产v日韩v欧美v| 日韩在线观看免费网站 | 国产网站在线| 日韩在线小视频| 高清乱码毛片入口| 欧美性色综合网| 亚洲色图第四色| 国产成a人亚洲| 成年人在线观看视频免费| av在线不卡顿| 国产麻豆乱码精品一区二区三区 | 国产成人免费av电影| 粗大黑人巨茎大战欧美成人| 日韩久久免费视频| 国产视频一二三四区| 色综合久久66| 青青操国产视频| 国产日韩综合av| 国产国语老龄妇女a片| 久久精品动漫| 日韩小视频网站| 国产高清久久| 精品无码久久久久国产| 日韩精品久久久久久久软件91| 久久久免费观看| 日本中文字幕在线视频| 日韩黄色在线免费观看| 精品久久久免费视频| 欧美图片一区二区三区| 草久久免费视频| 亚洲综合色成人| 国产麻豆视频在线观看| 国产视频一区二区在线观看| 亚洲av无码一区东京热久久| 精品一区二区三区免费| 国产精品天天av精麻传媒| 亚洲欧洲一区| 日本aa在线观看| 99久久精品国产亚洲精品| 日韩精品成人一区二区在线观看| 国产精品毛片av| 99re在线| 午夜日韩影院| 亚洲一区二区久久久久久| 欧美网站免费| 清纯唯美亚洲激情| 秋霞伦理一区| 日韩免费在线看| free欧美| 国产美女久久久| 国产一区二区三区| 91免费在线观看网站| 亚洲免费一区三区| 国产日韩欧美综合精品| 色天下一区二区三区| 欧美精品123| 欧美日韩国产传媒| 一区二区三区日韩视频| 自拍欧美日韩| 蜜臀av无码一区二区三区| 日韩视频一区| 韩国中文字幕av| 九九在线精品视频| 亚洲911精品成人18网站| 福利一区在线观看| 一区二区三区免费在线观看视频| 久久综合九色综合欧美就去吻| 亚洲精品色午夜无码专区日韩| 国产精品久久久久三级| 日韩女优一区二区| 精品国产乱码久久久久久婷婷| 免费看一级视频| 在线成人免费观看| 色欲av伊人久久大香线蕉影院| 日韩久久免费电影| avtt亚洲| 久久久久国产精品一区| 天天免费亚洲黑人免费| 91精品国产综合久久久久久蜜臀| 91精品啪在线观看国产手机| 欧美日韩在线观看一区| 色999国产精品| www.av片| 另类欧美日韩国产在线| 少妇伦子伦精品无吗| 久久久久久久久久电影| 亚洲色婷婷一区二区三区| 午夜精品123| 国产又黄又猛又爽| 亚洲精品国产精品乱码不99按摩 | 韩国av免费在线| 一区二区av在线| 欧美v亚洲v| 国产精品久久久久久久久久久不卡| 国产精品久久久久久久久久辛辛 | 日韩大尺度视频| 国产清纯美女被跳蛋高潮一区二区久久w | 91欧美视频在线| 白白色亚洲国产精品| 5566中文字幕| 色婷婷亚洲综合| 亚洲精品一区二区三区新线路| 一区二区三区 在线观看视| 精品精品导航| 91九色国产视频| 精品国产精品久久一区免费式| 欧美日韩中文字幕在线播放| 日本在线不卡一区| 少妇一级淫免费观看| 亚洲欧美日本在线| 精品无码一区二区三区的天堂| 日韩精品一区二区三区中文不卡 | 神马精品久久| 欧美成人在线免费| 草民电影神马电影一区二区| 久久久av水蜜桃| 围产精品久久久久久久| www黄色在线| 99精品在线免费| 精品无码人妻一区二区三| 欧美二区三区91| jizz日韩| 国产精品男人爽免费视频1| 久久av国产紧身裤| 99国产精品白浆在线观看免费| 激情综合网av| 国产大屁股喷水视频在线观看| 欧美性生交大片免费| 天天干天天舔天天射| 久久久在线视频| 亚洲午夜免费| 日韩视频 中文字幕| 国产一区二区剧情av在线| 国产黄色片在线| 欧美日韩亚洲高清一区二区| 黄色在线视频观看网站| 26uuu亚洲国产精品| 国产精伦一区二区三区| 免费人成自慰网站| 国产91丝袜在线播放0| 麻豆一区二区三区精品视频| 欧美大片在线观看| 欧美xxx黑人xxx水蜜桃| 国产福利久久| 99精品久久久| 中文字幕人妻一区二区| 色久优优欧美色久优优| 精华区一区二区三区| 国产激情视频一区| 国产99亚洲| 国产主播中文字幕| 国产精品国产馆在线真实露脸 | av网站免费线看精品| 国产成人在线免费观看视频| 亚洲精品国产精品自产a区红杏吧| 亚洲女同志freevdieo| 欧美美乳视频网站在线观看| 久久久人人人| а天堂中文在线资源| 91精品国产综合久久婷婷香蕉| 永久免费网站在线| 国产亚洲欧美一区二区三区| 国产欧美精品| 西西444www无码大胆| 欧美日韩高清一区二区不卡| gogo在线观看| 国产视频一区二区三区四区| 鲁大师影院一区二区三区| 天堂网av2018| 日韩欧美成人激情| 91www在线| 欧美一区二区视频在线| 久久国内精品视频| 欧美日韩成人免费观看| 日韩成人激情视频| jizz久久久久久| 国产精品av免费观看| 91首页免费视频| 亚洲图片欧美在线| 欧美成aaa人片免费看| 色综合久久中文| 奇米影视四色在线| 亚洲一卡二卡三卡四卡五卡| 青青草在线免费视频| 国产在线拍偷自揄拍精品| 影音先锋亚洲一区| 日韩中文字幕有码| 日韩一区二区在线观看视频播放| 大菠萝精品导航| 中文字幕欧美日韩一区二区| 9人人澡人人爽人人精品| 中文字字幕在线中文乱码| 欧美国产日韩在线| 精品欧美久久| 国产在线不卡av| 欧美福利视频一区| 英国三级经典在线观看| 国产一区一区三区| 久久久国产精品麻豆| 亚洲精选一区二区三区| 国产精品极品美女粉嫩高清在线| 在线视频观看日韩| 色哟哟一一国产精品| 亚洲老头同性xxxxx|