¡18 consejos de optimización de JS pueden resolver el 90% del código de montaña de mierda! ! !

Referencia: https://blog.csdn.net/techforward/article/details/131961841

¡18 consejos de optimización de JS pueden resolver el 90% del código de montaña de mierda! ! !

1. Función de flecha

// 传统函数定义
function add(a, b) {
    
    
 return a + b;
}
// 箭头函数简化
const add = (a, b) => a + b;

2. Desestructurar las variables de asignación

// 获取对象中的指定属性值
const firstName = person.firstName;
const lastName =  person.lastName;

// 直接赋值对象,指定属性赋值
const {
    
     firstName, lastName } = person;

console.log(fistName)
console.log(lastName)

3. Utilice literales de plantilla para empalmar caracteres.

// 传统字符串拼接
const val = 'Hello ' + name + '!';
// 模板字面量简化
const val = `Hello ${
      
      name}!`;

4. Utilice el operador de extensión para operaciones con matrices y objetos.

// 合并数组
const combined = [...array1, ...array2];
// 复制对象
const clone = {
    
     ...original };

5. Simplifica el ciclo

// 遍历数组
const doubled = numbers.map(num => num * 2);
// 过滤数组
const evens = numbers.filter(num => num % 2 === 0);

6. Simplificar el juicio

// 传统条件判断
let message;
if (isSuccess) {
    
    
 message = 'Operation successful';
} else {
    
    
 message = 'Operation failed';
}
// 三元运算
const message = isSuccess ? 'Operation successful' : 'Operation failed';

7. Utilice la desestructuración de objetos y los parámetros predeterminados para simplificar los parámetros de la función.

// 传统参数设置默认值
function greet(name) {
    
    
 const finalName = name || 'Guest';
 console.log(`Hello, ${
      
      finalName}!`);
 }
  
 // 对象解构和默认参数简化
 function greet({
    
     name = 'Guest' }) {
    
    
 console.log(`Hello, ${
      
      name}!`);
 }

8. Utilice conceptos de programación funcional como funciones puras y composición de funciones.

// 纯函数
function add(a, b) {
    
    
 return a + b;
 }
  
 // 函数组合
 const multiplyByTwo = value => value * 2;
 const addFive = value => value + 5;
 const result = addFive(multiplyByTwo(3));

9. Utilice literales de objetos para simplificar la creación y definición de objetos.

// 传统对象创建
const person = {
    
    
 firstName: 'John',
 lastName: 'Doe',
 age: 30,
 };
  
 // 对象字面量简化
 const firstName = 'John';
 const lastName = 'Doe';
 const age = 30;
 const person = {
    
     firstName, lastName, age };

10. Utilice nombres y comentarios adecuados para mejorar la legibilidad del código.

11. Optimización del juicio condicional

si no

// param {status} status 活动状态:1:成功 2:失败 3:进行中 4:未开始
let txt = '';
if (status == 1) {
    
    
 txt = "成功";
} else if (status == 2) {
    
    
 txt = "失败";
} else if (status == 3) {
    
    
 txt = "进行中";
} else {
    
    
 txt = "未开始";
}

caja del interruptor

let txt = '';
switch (status) {
    
    
 case 1:
 txt = "成功";
 break;
 case 2:
 txt = "成功";
 break;
 case 3:
 txt = "进行中";
 break;
 default:
 txt = "未开始";
}

Determinar la encapsulación

// 好的
shouldShowSpinner(fsm, listNode){
    
    
 return fsm.state === 'fetching' && isEmpty(listNode)
}
if(shouldShowSpinner(fsm, listNode)){
    
    
 //...doSomething
}

Object.assign asigna un valor predeterminado al objeto predeterminado

const menuConfig = {
    
    
 title: 'Order',
 buttonText: 'Send',
 cancellable: true
};
function createMenu(config) {
    
    
 Object.assign({
    
    
   title: 'Foo',
   body: 'Bar',
   buttonText: 'Baz',
   cancellable: true 
 }, config) // {} 目标对象,config 源对象
}
createMenu(menuConfig);

Observación:

Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。

简单来说,就是Object.assign()是对象的静态方法,可以用来复制对象的可枚举属性到目标对象,利用这个特性可以实现对象属性的合并。
 Object.assign(target, ...sources)
 参数: target--->目标对象
       source--->源对象
       返回值:target,即目标对象

Los parámetros de función "dos" o menos son los mejores

// 不好的
function createMenu(title, body, buttonText, cancellable) {
    
    
 // ...
}
// 好的
const menuConfig = {
    
    
 title: 'Foo',
 body: 'Bar',
 buttonText: 'Baz',
 cancellable: true
};
function createMenu(menuConfig){
    
    
 // ...
}

12. Utilice lenguaje interpretativo

13. Permitir que los objetos tengan miembros privados: implementado mediante cierres

// 不好的
const Employee = function(name) {
    
    
 this.name = name;
};
Employee.prototype.getName = function getName() {
    
    
 return this.name;
};
const employee = new Employee('John Doe');
console.log(`Employee name: ${
      
      employee.getName()}`); // Employee name: John Doe
delete employee.name;
console.log(`Employee name: ${
      
      employee.getName()}`); // Employee name: undefined
// 好的
const Employee = function(name){
    
    
 this.getName = function(){
    
    
   return name
 }
}
const employee = new Employee('John Doe');
console.log(`Employee name: ${
      
      employee.getName()}`); // Employee name: John Doe
delete employee.name;
console.log(`Employee name: ${
      
      employee.getName()}`); // Employee name: undefined

Supongo que te gusta

Origin blog.csdn.net/weixin_35773751/article/details/132030321
Recomendado
Clasificación