成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何編寫干凈的JavaScript代碼?

開發 前端
在 JavaScript 中,良好命名的關鍵不在于最短的變量名,而在于最具描述性的變量名。map、filter等方法都需要一個匿名函數作為參數,在這些情況下,使用箭頭函數是最方便和優雅的方式。

今天來分享幾個編寫干凈的JavaScript代碼的技巧!

1. 更好的命名

在 JavaScript 中,良好命名的關鍵不在于最短的變量名,而在于最具描述性的變量名。

(1)減少幻數

將代碼中的一些數字定義為一個常量,以使它更有意義,也便于后期的維護。

?

for (i=0; i < 8765; i++){}

?

const HOURS_IN_A_YEAR = 8765

for (i=0; i < HOURS_IN_A_YEAR; i++){}

(2)語義化命名

盡可能語義化變量和函數的名稱。

?

onst expired = true; 
const e = true;

?

const hasExpired = true; // 布爾值應該有一個類似于is、has或was的前綴
const expiredDate = new Date()
let expiredElementsAmount = 0
let allExpiredElemnts = []

2. 保持簡潔

(1)避免重復

為了更好地實現簡潔的代碼,應該遵循DRY(Don't Repeat Yourself)原則。減少代碼的重復。

?

  async function notifyUsers(userIds, message) {
userIds.foreach(userId => {
const user = await User.findByPk(userId)
if(user.isSubscribed) {
const Notification = await Notifications.create({
date: new Date(),
user_id: userId,
message,
emailNotify: true });
Notification.save();
} else {
const Notification = await Notifications.create({
date: new Date(),
user_id: userId,
message,
emailNotify: true });
Notification.save();
}
}
}

?

async function notifyUsers(userIds, message) {
userIds.foreach(userId => {
const user = await User.findByPk(userId)
notifyUsers(userId, message, user.isSubscribed)
}
}

async function createNotification(userId, message, isSubscribed) {
const Notification = await Notifications.create({
date: new Date(),
user_id: userId,
message,
emailNotify: isSubscribed });
Notification.save();
}

(2)使用遞歸

有些情況下,使用遞歸的代碼會比迭代更加簡潔。

?

const stepsToHundred = (number) => {
let steps = 0

while(number < 100) {
number *= 2
steps++
}

return steps
}

?

const stepsToHundred = (number, steps) =>
number < 100 ? stepsToHundred(number * 2, steps + 1) : steps

(3)字符串連接

ES6中新增了模板字符串功能使我們可以在拼接字符串時代碼更短、更簡潔。

?

const welcomeMessage = "你好" + user1 + ", 我是" + user2;

?

const welcomeMessage = `你好 ${user1}, 我是 ${user2}`

3. 減少多層嵌套

(1)條件語句

不要將 return 語句嵌套到 if-else 中。

?

const getUSTime = (time) => {
if(time <= 12){
return time + "AM"
} else {
return time + "PM"
}
}

?

const getUSTime = (time) => {
if(time <= 12) return time + "AM"
return time + "PM"
}

也可以使用三元表達式來寫:

const getUSTime = (time) => {
return time + (time <= 12 ? "AM" : "PM")
}

(2)async/await

當使用鏈式的 Promise 時,代碼的可讀性就會變差??梢允褂胊sync/await來優化異步嵌套的代碼。

?

const sharePost = () => {
getPost().then(post => {
sendTweet(post.url, `分享一篇文章: ${post.title}`)
.then(() => {
console.log("分享成功");
});
});
}

?

const sharePost = async () => {
const post = await getPost();
await sendTweet(post.url, `分享一篇文章: ${post.title}`)
console.log("分享成功");
}

4. 干凈的函數

(1)處理大量參數的函數

當函數的參數很多時,需要按照順序傳遞參數就很麻煩,可以使用對象包裝所有的參數,這樣傳遞參數時就可以亂序傳遞,避免傳參時出錯。

?

function addUser(firstName, lastName, age, city, state, zipCode) {
// ...
}

?

function addUser({ firstName, lastName, age, city, state, zipCode }) {
// ...
}

(2)單一責任原則

使用單一職責原則,可以輕松的命名函數,每個函數只做一件事??梢酝ㄟ^它的名稱確切地知道該函數的作用,并且該函數不會是冗長的。

?

async function signupUser(email) {
const user = await User.create({ email });
await user.save();

const notifcation = await Notification.create({ email });
await notifcation.save();

const date = new Date()
Log.add(date, "已注冊", email)
}

?

const logSignup(email) => Log.add(new Date(), "已注冊", email)

async function signupUser(email) {
createUser(email)
notifyUser(email)
logSignup(email)
}

async function createUser(email) {
const user = await User.create({ email });
await user.save();
}

async function notifyUser(email) {
const notifcation = await Notification.create({ email });
await notifcation.save();
}

(3)回調中首選箭頭函數

在 JavaScript 中,map、filter等方法都需要一個匿名函數作為參數,在這些情況下,使用箭頭函數是最方便和優雅的方式

?

[1, 2, 3].forEach(function (x) {
const y = x ** 2;
return x + y;
});

?

[1, 2, 3].forEach((x) => {
const y = x ** 2;
return x + y;
});

責任編輯:武曉燕 來源: 前端充電寶
相關推薦

2021-09-01 08:55:20

JavaScript代碼開發

2021-11-30 10:20:24

JavaScript代碼前端

2020-07-15 14:51:39

代碼C+開發

2020-08-27 07:00:00

代碼軟件應用程序

2023-03-27 15:05:10

Python技巧

2017-09-14 12:45:35

2015-05-11 10:48:28

代碼干凈的代碼越少越干凈

2013-04-15 09:02:43

JavaScriptJS

2023-01-27 14:53:03

2011-03-04 10:11:09

JavascriptAPI

2024-02-23 08:00:00

2024-06-24 10:31:46

2016-11-30 18:35:03

JavaScript

2012-12-17 13:51:22

Web前端JavaScriptJS

2021-12-29 16:34:19

JavaScript代碼庫開發

2014-04-21 10:14:52

PromisesJavaScript

2009-06-24 15:00:39

Javascript代

2012-07-11 10:51:37

編程

2020-06-15 11:04:38

JavaScript 代碼JavaScript

2022-07-18 10:15:16

Python
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 青青久视频| 成人精品一区二区三区四区 | 99re| 国产精品亚洲成在人线 | 天天爽夜夜操 | 亚洲手机视频在线 | 美日韩中文字幕 | 亚洲午夜视频 | 国产精品黄色 | 国产精品九九视频 | 午夜视频一区二区 | 久久久91精品国产一区二区三区 | 久久久久久免费观看 | 国产日韩精品一区二区 | 香蕉超碰| 欧美极品在线观看 | 国产毛片av | 欧美精品啪啪 | 亚洲成人免费在线 | 国产中文字幕av | 久久国产一区 | 国内91在线| 自拍偷拍亚洲视频 | 一区二区精品 | 99国产精品视频免费观看一公开 | 伊人看片 | 久久久久亚洲精品 | 久久99久久99 | 久久国产激情视频 | 欧美三区 | 精品国产乱码久久久久久闺蜜 | 国产视频一二三区 | 久久亚洲一区二区 | 又黑又粗又长的欧美一区 | 日韩爱爱网站 | 新91视频网 | 三级视频网站 | 日本不卡一区 | 精品成人佐山爱一区二区 | 在线成人福利 | 午夜在线影院 |