优雅编程:JavaScript代码优化常见的3个小技巧

简介: 在代码Review过程中,享受让代码变得优雅是一件很有成就感的事情,本文总结了项目开发中常见的3个代码优化的技巧,这些技巧在VUE项目中有比较多的使用场景,不妨尝试去编写出高质量的代码。

image.png在代码Review过程中,享受让代码变得优雅是一件很有成就感的事情,本文总结了项目开发中常见的3个代码优化的技巧,这些技巧在VUE项目中有比较多的使用场景,不妨尝试去编写出高质量的代码。


神奇的扩展运算符


扩展运算符是我比较喜欢的JavaScript操作符,常用于数组、对象的操作。常用的场景有以下四个:

需要注意的点:扩展运算符的拷贝属于一层拷贝。

1.复制数组

const weeks = ["Monday", "Tuesday"];
const newWeeks = [...weeks];
console.log(newWeeks);  // [ 'Monday', 'Tuesday' ]

2.扩展数组

const weeks = ["Tuesday", "Wednesday"];
const newWeeks = ["Monday", ...weeks, "Thursday", "Friday"];
console.log(newWeeks);  // [ 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday' ]

3.扩展对象

const myinfo = {
    name: "DevPoint",
    city: "Shenzhen",
};
const myDetail = {
    ...myinfo,
    province: "Guangdong",
};
console.log(myDetail); // { name: 'DevPoint', city: 'Shenzhen', province: 'Guangdong' }

4. 数组/对象合并

const weeks1 = ["Monday", "Thursday", "Friday"];
const weeks2 = ["Tuesday", "Wednesday"];
const newWeeks = [...weeks1, ...weeks2];
console.log(newWeeks); // [ 'Monday', 'Thursday', 'Friday', 'Tuesday', 'Wednesday' ]
const myinfo = {
    name: "DevPoint",
};
const address = {
    province: "Guangdong",
    city: "Shenzhen",
};
const myDetail = {
    ...myinfo,
    ...address,
};
console.log(myDetail); // { name: 'DevPoint', province: 'Guangdong', city: 'Shenzhen' }

null 检查的最佳方法

null 值检查是前端项目中比较常见的操作,在过去的语法中我们是这样进行检查:

if (tmp !== null && tmp !== undefined && tmp !=="") {
    //
}

现在一个简单的if就可以实现:

if (tmp) {
    //
}

如果tmp为空值则条件为falseif的条件为true的情况包括:nullundefinedNaN、空字符串、0false

之前在《24个Javascript代码优化技巧》介绍过空值的检查方法,最新 Javascript 语法新增了空值合并运算符??确实有一个很好的快捷方式来实现这个功能。在 《Javascript代码优化的15个小知识》文中也介绍了:如何在JavaScript中检查空字符串/undefined/null。


使用 .map()、.reduce()、.filter()


是的,我们经常讨论函数式和响应式编程的强大技术!几年前第一次接触函数式编程的时候,为我打开了一扇全新的门。现在,每当看到这些简单的说明,会被它优雅的代码风格所震撼。《javascript数组之includes、reduce》介绍了reduce的详细用法。

函数式编程的基本原理之一是使用列表和操作,本文将用三个最著名的操作:mapreducefilter来重构代码的例子。

在Covid-19之前,一个日本家庭来巴黎度假。他们在超市买了些食物和日用品。但是所有的物品都是欧元标价,他们想知道每一件物品的价格以及换算成日元的价格。

以汇率 1欧元等于126日元来计算。

所以,按照传统的方式,将用一个经典的循环来做:

const RATE = 126;
const items = [
    { name: "pineapple", price: 2, type: "food" },
    { name: "beef", price: 20, type: "food" },
    { name: "advocate", price: 1, type: "food" },
    { name: "shampoo", price: 5, type: "other" },
];
let sum = 0;
const itemsInYen = [];
const length = items.length;
for (let i = 0; i < length; i++) {
    const item = items[i];
    item.price *= RATE;
    itemsInYen.push(item);
    if (item.type === "food") {
        sum += item.price;
    }
}
console.log(itemsInYen);
console.log(sum); // 2898

输出的结果如下:

[
  { name: 'pineapple', price: 252, type: 'food' },
  { name: 'beef', price: 2520, type: 'food' },
  { name: 'advocate', price: 126, type: 'food' },
  { name: 'shampoo', price: 630, type: 'other' }
]
2898

现在我们利用.map()、.reduce()、.filter()对上述代码进行重构:

const RATE = 126;
const items = [
    { name: "pineapple", price: 2, type: "food" },
    { name: "beef", price: 20, type: "food" },
    { name: "advocate", price: 1, type: "food" },
    { name: "shampoo", price: 5, type: "other" },
];
const itemsInYen = items.map((item) => {
    const itemsInYen = { ...item };
    itemsInYen.price *= RATE;
    return itemsInYen;
});
console.log(itemsInYen);
const sum = itemsInYen
    .filter((item) => item.type === "food")
    .reduce((total, item) => (total += item.price), 0);
console.log(sum);

上述输出结果一致。map 将所有价格从欧元转换为日元,filter 过滤非食品的消费项,reduce 将每个食品项目的价格添加到总金额中!


相关文章
|
2月前
|
JavaScript
短小精悍的js代码
【10月更文挑战第17天】
129 58
|
2月前
|
JavaScript 前端开发 开发者
如何在 Visual Studio Code (VSCode) 中使用 ESLint 和 Prettier 来检查代码规范并自动格式化 Vue.js 代码。
【10月更文挑战第7天】随着前端开发技术的快速发展,代码规范和格式化工具变得尤为重要。本文介绍了如何在 Visual Studio Code (VSCode) 中使用 ESLint 和 Prettier 来检查代码规范并自动格式化 Vue.js 代码。通过安装和配置这两个工具,可以确保代码风格一致,提升团队协作效率和代码质量。
270 2
|
2月前
|
JavaScript 前端开发 内存技术
js文件的入口代码及需要入口代码的原因
js文件的入口代码及需要入口代码的原因
45 0
|
17天前
|
JavaScript 前端开发 测试技术
在 golang 中执行 javascript 代码的方案详解
本文介绍了在 Golang 中执行 JavaScript 代码的四种方法:使用 `otto` 和 `goja` 嵌入式 JavaScript 引擎、通过 `os/exec` 调用 Node.js 外部进程以及使用 WebView 嵌入浏览器。每种方法都有其适用场景,如嵌入简单脚本、运行复杂 Node.js 脚本或在桌面应用中显示 Web 内容。
51 15
在 golang 中执行 javascript 代码的方案详解
|
1月前
|
JavaScript
原生js炫酷随机抽奖中奖效果代码
原生js随机抽奖是一个炫酷的根据数据随机抽奖的代码,该网页可进行随机抽取一个数据,页面动画高科技、炫酷感觉的随机抽奖效果,简单好用,欢迎下载!
46 3
原生js炫酷随机抽奖中奖效果代码
|
1月前
|
前端开发 JavaScript 持续交付
提高JavaScript编程效率
提高JavaScript编程效率
27 3
|
21天前
|
JSON JavaScript 关系型数据库
node.js连接GBase 8a 数据库 并进行查询代码示例
node.js连接GBase 8a 数据库 并进行查询代码示例
|
1月前
|
JavaScript 前端开发 开发者
如何在 Visual Studio Code (VSCode) 中使用 ESLint 和 Prettier 检查代码规范并自动格式化 Vue.js 代码,包括安装插件、配置 ESLint 和 Prettier 以及 VSCode 设置的具体步骤
随着前端开发技术的快速发展,代码规范和格式化工具变得尤为重要。本文介绍了如何在 Visual Studio Code (VSCode) 中使用 ESLint 和 Prettier 检查代码规范并自动格式化 Vue.js 代码,包括安装插件、配置 ESLint 和 Prettier 以及 VSCode 设置的具体步骤。通过这些工具,可以显著提升编码效率和代码质量。
450 4
|
1月前
|
JSON 移动开发 数据格式
html5+css3+js移动端带歌词音乐播放器代码
音乐播放器特效是一款html5+css3+js制作的手机移动端音乐播放器代码,带歌词显示。包括支持单曲循环,歌词显示,歌曲搜索,音量控制,列表循环等功能。利用json获取音乐歌单和歌词,基于html5 audio属性手机音乐播放器代码。
110 6
下一篇
DataWorks