国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

十個必須知道的 JavaScript 技巧,讓你成為更好的程序員

開發 前端
過去,我寫了很多垃圾代碼,現在,看起來很糟糕。當我再次看到那些代碼片段時,我甚至懷疑自己是否適合做一名程序員,但是,不管怎么樣,已經走在編程開發的路上了,所以不會不懂只能多學習了。

前言

過去,我寫了很多垃圾代碼,現在,看起來很糟糕。

當我再次看到那些代碼片段時,我甚至懷疑自己是否適合做一名程序員,但是,不管怎么樣,已經走在編程開發的路上了,所以不會不懂只能多學習了。

現在,我就把自己踩過的坑總結一下分享給你,希望對你有所幫助。

1. Promise回調地獄

Promises 提供了一種優雅的方式來處理 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’是什么意思嗎?沒想到是指window devicePixelRatio。

// ?
// 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前端開發
相關推薦

2023-06-27 17:42:24

JavaScript編程語言

2022-06-08 10:42:34

ReduceJavaScript技巧

2021-09-15 09:20:37

Python函數代碼

2024-04-24 14:52:26

JavaScriptWeb 開發

2013-04-10 09:35:22

程序員

2009-06-25 10:15:41

糟糕的程序員

2011-05-11 15:28:05

2018-05-23 14:10:15

程序員技能溝通

2023-05-11 16:29:39

Javascript開發前端

2014-07-15 15:38:41

Android

2014-05-15 16:20:26

iOS程序員Android要點

2023-11-13 08:18:56

2011-01-28 15:11:15

PowerShell

2019-07-15 15:59:32

高維數據降維數據分析

2013-07-09 15:26:29

程序員算法

2024-03-20 17:35:42

2022-10-17 15:33:46

前端開發數組

2023-12-12 17:46:33

系統kswapd0內核

2023-03-27 23:57:25

JavaScrip開發技巧

2022-07-26 09:09:23

Python編程語言代碼
點贊
收藏

51CTO技術棧公眾號

欧美重口另类| 国产一区成人| 欧美日韩人人澡狠狠躁视频| 一区二区三区四区视频在线观看| 国内精品视频| 91精品国产综合久久精品app| 亚洲精品怡红院| 日韩av在线播放中文字幕| 日本国产高清不卡| 福利精品一区| 日韩欧美一级在线播放| 黑巨人与欧美精品一区| 国产精品18久久久久久久网站| 99久久无色码| 久久视频在线观看| 国产亚洲日本欧美韩国| 福利视频在线导航| 中文字幕一区二区5566日韩| 伊人久久婷婷色综合98网| 国产精品久久久久久久久久10秀| 日韩在线视频中文字幕| 性欧美videoshd高清| 色婷婷国产精品久久包臀| 欧美一级黄色影院| 成人av电影免费在线播放| 亚洲第一导航| 午夜影院日韩| 成人黄视频免费| 残酷重口调教一区二区| 奇门遁甲1982国语版免费观看高清| 四虎国产精品免费久久5151| 亚洲人成网站在线播| 免费污视频在线| 欧美一区二区三区成人| 色网站免费在线观看| 色婷婷激情一区二区三区| 最近中文字幕在线中文视频| 亚洲欧美日韩国产中文在线| 成人午夜剧场免费观看完整版| 国产视频一区在线观看| 亚洲国产精品成人天堂| 国产一区二区久久| 日本在线视频www色| 黄色小说综合网站| 天天做天天躁天天躁| 久久97超碰国产精品超碰| 亚洲一区精彩视频| 国产精品资源在线观看| 国产高清av在线播放| aa级大片欧美| 制服影音先锋| 欧美日韩国产精品一区二区不卡中文| 中文字幕欧美一区二区| 欧美午夜影院一区| caopen在线视频| 日韩激情在线视频| www.一区| 国产91精品黑色丝袜高跟鞋| 国产成人黄色| 国产精品久久久久久免费观看| 日韩一级网站| 欧美 日韩 国产 在线观看| 99久久精品国产一区| caoporn97免费视频公开| 亚洲一区二区三区四区中文字幕 | 亚洲综合精品久久| 亚洲一区二区三区精品中文字幕| 一本久久a久久精品亚洲| 免费大片在线观看www| 亚洲福利精品在线| 国产高清视频一区二区| 欧美综合在线观看| 女人香蕉久久**毛片精品| 欧美精品二区三区四区免费看视频 | 在线观看免费播放网址成人| 亚洲免费在线观看视频| h视频在线观看免费| 亚洲欧美日韩精品久久亚洲区| 亚洲成人影音| 91日本在线观看| 国产中文字幕精品| 免费的很黄很污的视频网站| 欧美中文字幕亚洲一区二区va在线| 国产h片在线观看| 97涩涩爰在线观看亚洲| 亚洲福利精品| 亚洲国产精品成人天堂| 亚洲精品乱码久久久久久久久| 黄网页免费在线观看| 色黄久久久久久| 91精品成人| 永久免费网站视频在线观看| 亚洲精品视频在线看| www.在线视频| 国内精品久久久久影院 日本资源| 激情欧美一区| 人妻有码中文字幕| 欧美亚洲高清一区二区三区不卡| 视频精品导航| 成人xxxxx色| 久久久久国产精品人| 在线a人片免费观看视频| 精品国产一区二区三区在线观看 | 欧美日韩在线中文字幕| 亚洲欧洲在线视频| 天天色综合色| 国产精品国产对白熟妇| 欧洲中文字幕精品| 欧美日韩导航| 艳母动漫在线观看| 欧美日韩国产精品一区二区不卡中文| 97成人超碰| 久久久国产精品一区二区三区| 欧美国产精品专区| 影院在线观看全集免费观看| 国产黑人绿帽在线第一区| 国产91综合网| 性xxxxfjsxxxxx欧美| 国产日韩综合一区二区性色av| 99r精品视频| 黄色在线观看视频网站| 亚洲一区二区三区sesese| 国产精品污www在线观看| 婷婷电影在线观看| 精品一区二区三区自拍图片区| 亚洲天堂福利av| 欧美激情三区| 国内外成人激情免费视频| 欧美日韩精品一区二区三区| 亚洲第一福利社区| 熟妇人妻va精品中文字幕 | 国产乱真实合集| 丝袜美腿亚洲一区二区| 视频一区二区三区入口| 色就是色亚洲色图| 国产精品1234| 国产精品色噜噜| 福利一区三区| 精品无码国产一区二区三区av| 日韩欧美国产综合一区| 在线高清一区| 成年人在线观看网站| 成人精品一区二区三区电影免费| 国产精品天美传媒| 亚洲伦理久久| 欧美在线观看成人| 中文字幕亚洲一区二区三区五十路| 日韩电影一区二区三区| 天堂а√在线资源在线| 国产精品亚洲一区| 色菇凉天天综合网| 永久91嫩草亚洲精品人人| 精东传媒在线观看| 国产精品一区二区久久| 亚洲高清三级视频| 91成人网在线观看| 成年人免费在线视频| 国产精品免费一区二区三区观看| 色综合久久久久综合99| 国产高清久久| 69视频在线| 日韩片电影在线免费观看| 精品99一区二区三区| 国产在线精品一区二区不卡了 | 国产对白叫床清晰在线播放| 国产拍精品一二三| 午夜精品久久久久久久99水蜜桃| 菠萝蜜一区二区| 一二三区在线观看| 99re资源| 日韩限制级电影在线观看| 日韩高清一区二区| 亚洲承认视频| 欧美黄色性生活| 国产日韩欧美中文| 欧美人体做爰大胆视频| 免费一区二区视频| 国产毛片精品久久| 99在线免费视频| 国产视频999| 欧美日韩国产综合一区二区| 日韩av成人高清| 日韩成人一区| xxav视频| 国产一区免费在线| 国产一区二区三区直播精品电影 | 色偷偷免费视频| 亚洲精品日产aⅴ| 日韩一区二区三区精品视频| 极品尤物av久久免费看| 国产精品日韩精品在线播放| 国产九一视频| 久久香蕉综合色| 丝袜亚洲另类欧美重口| 一区二区视频在线看| 亚洲欧美日韩视频二区| 国产精品1区| 99视频在线观看地址| 精品无码国产一区二区三区av| 国产精品狼人色视频一区|