每个前端应该掌握的7个代码优化的小技巧

news/2024/7/10 22:46:24 标签: 前端, javascript, 开发语言, es6, 前端框架

1. 字符串的自动匹配(Array.includes

在写代码时我们经常会遇到这样的需求,我们需要检查某个字符串是否是符合我们的规定的字符串之一。最常见的方法就是使用||===去进行判断匹配。但是如果大量的使用这种判断方式,定然会使得我们的代码变得十分臃肿,写起来也是十分累。其实我们可以使用Array.includes来帮我们自动去匹配。

javascript">// 未优化前的写法
const isConform = (letter) => { 
if (letter === "a" ||letter === "b" ||letter === "c" ||
   letter === "d" || letter === "e") {
   return true;   
}   
return false; };
javascript">
```javascript
// 优化后的写法
 const isConform = (letter) =>   ["a", "b", "c", "d", "e"].includes(letter);

2.for-offor-in自动遍历

for-offor-in,可以帮助我们自动遍历Arrayobject中的每一个元素,不需要我们手动跟更改索引来遍历元素。

注:我们更加推荐对象(object)使用for-in遍历,而数组(Array)使用for-of遍历

for-of

javascript">const arr = ['a',' b', 'c'];
 // 未优化前的写法 
for (let i = 0; i < arr.length; i++) {
   const element = arr[i]; 
   console.log(element);
}
javascript">// 优化后的写法 
for (const element of arr) {
    console.log(element);
} 
// expected output: "a" // expected output: "b" // expected output: "c"

for-in

javascript">const obj = {   a: 1,   b: 2,   c: 3, };
 // 未优化前的写法 
 const keys = Object.keys(obj); 
 for (let i = 0; i < keys.length; i++) {
    const key = keys[i];   
    const value = obj[key];   
    // ... }

js

复制代码

// 优化后的写法 for (const key in obj) { const value = obj[key]; // ... }

3.false判断

如果你想要判断一个变量是否为null、undefined、0、false、NaN、'',你就可以使用逻辑非(!)取反,来帮助我们来判断,而不用每一个值都用===来判断

javascript">// 未优化前的写法 
const isFalsey = (value) => { 
if (value === null ||value === undefined ||
   value === 0 || value === false ||value === NaN ||value === "") { 
return true;  
 }  
return false; };
javascript">// 优化后的写法
 const isFalsey = (value) => !value;

4.三元运算符代替(if/else

在我们编写代码的时候肯定遇见过if/else选择结构,而三元运算符可以算是if/else的一种语法糖,能够更加简洁的表示if/else

javascript">// 未优化前的写法 let info; 
if (value < minValue) {
   info = "Value is最小值";
 } else if (value > maxValue) {
    info = "Value is最大值"; 
 } else {
    info = "Value 在最大与最小之间";
 }
javascript">//优化后的写法
 const info =   value < minValue   ? "Value is最小值"  : value > maxValue ? "Value is最大值" : "在最大与最小之间";

5.函数调用的选择

三元运算符还可以帮我们判断当前情况下该应该调用哪一个函数,

javascript">function f1() {
   // ... 
} 
function f2() {
   // ... 
 } 
 // 未优化前的写法 
if (condition) { 
   f1(); }
else
{
f2(); 
}
javascript">// 优化后的写法 
(condition ? f1 : f2)();

6.用对象代替switch/case选择结构

switch case通常是有一个case值对应一个返回值,这样的结构就类似于我们的对象,也是一个键对应一个值。我们就可以用我们的对象代替我们的switch/case选择结构,使代码更加简洁

javascript">const dayNumber = new Date().getDay(); 
// 未优化前的写法
 let day; switch (dayNumber) {   
 case 0:    
  day = "Sunday";    
   break;   
   case 1:     
   day = "Monday";     
   break;   
   case 2:    
    day = "Tuesday";    
     break;   case 3:    
     day = "Wednesday";    
     break;   case 4:   
       day = "Thursday";   
         break; 
           case 5:    
          day = "Friday";   
           break;  
            case 6:   
              day = "Saturday"; }
javascript">// 优化后的写法
 const days = {   
 0: "Sunday",  
  1: "Monday",   
  2: "Tuesday",   
  3: "Wednesday",  
   4: "Thursday",   
   5: "Friday",   
   6: "Saturday", 
   };
  const day = days[dayNumber];`

7. 逻辑或(||)的运用

如果我们要获取一个不确定是否存在的值时,我们经常会运用if判断先去判断值是否存在,再进行获取。如果不存在我们就会返回另一个值。我们可以运用逻辑或(||)的特性,去优化我们的代码

javascript">// 未优化前的写法 
let name; 
if (user?.name) 
{   
name = user.name; 
} else {
   name = "Anonymous";
}
javascript">// 优化后的写法
 const name = user?.name || "Anonymous";

http://www.niftyadmin.cn/n/349153.html

相关文章

在Ubuntu 20.04上安装和配置TFTP服务器

Trivial File Transfer Protocol&#xff08;TFTP&#xff09;是一种简单的文件传输协议&#xff0c;常用于网络设备的固件更新、系统安装和配置文件的传输。在Ubuntu 20.04操作系统中&#xff0c;安装和配置TFTP服务器是一个相对简单的过程。本文将提供详细的步骤指导&#xf…

06-添加用户关注、我的关注列表、我的粉丝列表

新建用户关注分组接口 并返回主键id 和 查询该用户创建的 所有用户关注分组接口比较简单,省略。 1、数据库表设计:用户关注表、用户关注分组表 CREATE TABLE `t_user_following` (`id` bigint(12) unsigned NOT NULL AUTO_INCREMENT COMMENT 主键id,`user_id` bigint(12) …

Spring传播机制(七种)

一、概述 Spring在TransactionDefinition接口中规定了7种类型的事务传播行为。Propagation枚举则引用了这些类型&#xff0c;开发过程中我们一般直接用Propagation枚举。 1.1 Propagation源码 public enum Propagation {REQUIRED(0),SUPPORTS(1),MANDATORY(2),REQUIRES_NEW(…

10 异常机制

什么是异常? 程序员为什么需要处理异常? 指java程序在运行过程中出现的不正常的事件,会导致程序中断,影响后面程序的运行 处理异常的原因:引导程序向正确的方向运行,使整个程序能完整地运行 Java的异常继承体系是什么? Throwable是所有异常(Exception)和错误(Error)的父…

ARM Cortex-M的栈结构及回溯

1. 概述 最近在研究ARM Cortex-M系列的单片机的栈结构及栈回溯。研究这个有什么用呢&#xff1f;有以下几个方面&#xff1a; 深入了解处理器指令、程序运行的原理等知识&#xff0c;对程序设计技能的提高有一定的帮助。当你的程序出现问题了&#xff0c;可以根据栈数据找到出…

chatgpt赋能Python-python_changeint

Python中changeint函数介绍&#xff1a;将浮点数转换为整数 Python是一种高级编程语言&#xff0c;众所周知&#xff0c;它非常强大且易于学习。在Python中&#xff0c;有一个很有用的函数&#xff0c;名为changeint&#xff0c;它可以将一个浮点数转换为整数。在本文中&#…

DJ8-3 shell 进程监控(ps、sleep、kill)

目录 8.6 进程监控 8.6.1 获取进程状态信息&#xff1a;ps 命令 8.6.2 暂停进程运行&#xff1a;sleep 命令 8.6.3 终止进程运行&#xff1a;kill 命令 8.6 进程监控 8.6.1 获取进程状态信息&#xff1a;ps 命令 1、不带参数的 ps 不带参数的 ps 命令运行时&#…

【C++】STL——容器适配器priority_queue(优先级队列)详解 及 仿函数的介绍和使用

文章目录 1. priority_queue的介绍和使用1.1 priority_queue的介绍1.2 priority_queue的使用1.2.1 仿函数介绍1.2.2 在OJ中的使用&#xff1a;数组中的第K个最大元素思路1&#xff1a;排序思路2&#xff1a;priority_queue思路3&#xff1a;TOP-K思想 2. priority_queue的模拟实…