文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

26 个写高效干净JavaScript 的小技巧

2024-11-29 23:24

关注

今天这篇内容,我们将分享26个JavaScript技巧,可帮助你编写更简洁、更高效的 JavaScript 代码,并附有示例来帮助您实现更好的代码效果。

1.使用const并避免使用 var

避免使用 var 声明变量。相反,对块作用域变量使用 let 和 const 可以提高可读性并减少运行时错误。

// Instead of
var name = 'Lokesh Prajapati';


// Use
const name = 'Lokesh Prajapati'; // for constants
let age = 24; // for variables that may change

2. 使用描述性变量名称

选择描述其用途或它们所持有的值的变量和函数名称。

// Instead of
const d = new Date();


// Use
const currentDate = new Date();

3. 使用模板文字

模板文字使字符串连接更具可读性。

const name = 'Lokesh';
console.log(`Hello, ${name}!`); // More readable

4. 解构赋值

解构使得从数组中提取值或从对象中提取属性变得更加容易。

const person = { name: 'Lokesh', age: 24 };
const { name, age } = person;

5. 默认参数

使用默认参数使您的函数更加健壮。

function greet(name = 'Guest') {
  console.log(`Hello, ${name}!`);
}

6. 箭头函数

箭头函数提供简洁的语法并按词法绑定 this 值。

const add = (a, b) => a + b;

7. 在异步代码中使用 Promise 和 Async/Await

Promise 和 async/await 语法使异步代码更易于阅读和管理。

async function fetchData() {
  const data = await fetch('https://api.example.com');
  return data.json();
}

8. 模块

使用模块有效地组织和重用您的代码。

// math.js
export const add = (a, b) => a + b;


// app.js
import { add } from './math.js';
console.log(add(2, 3));

9. 短路评估

使用短路求值来表达简洁的条件表达式。

const greet = name => console.log(name || 'Guest');

10.三元运算符

三元运算符可以简化 if-else 语句。

const age = 20;
const canVote = age >= 18 ? 'Yes' : 'No';

11. 扩展运算符

扩展运算符允许迭代器在需要 0+ 参数的地方进行扩展。

const nums = [1, 2, 3];
const newNums = [...nums, 4, 5];

12. 其余参数

剩余参数允许函数接受不定数量的参数作为数组。

function sum(...nums) {
  return nums.reduce((acc, curr) => acc + curr, 0);
}

13. Chain Promises Wisely

Chain 承诺避免“回调地狱”并保持代码整洁。

fetchData()
  .then(data => processData(data))
  .then(result => displayData(result))
  .catch(error => console.error(error));

14.使用数组(Array)和对象(Object)方法

利用数组和对象的内置方法来获得更简洁和描述性的代码。

const numbers = [1, 2, 3, 4, 5];
const doubled = numbers.map(number => number * 2);

15. 提前返回

使用提前返回来避免深层嵌套并使您的函数更加清晰。

function processUser(user) {
  if (!user) return;
  // Process user
}

16.避免全局变量

尽量减少全局变量的使用,以减少潜在的冲突和错误。

17. 明智地评论

注释应该解释“为什么”要做某事,而不是“正在做什么”,因为代码本身对于后者应该是不言自明的。好的注释可以防止误解,并为将来阅读您代码的任何人(包括您自己)节省时间。

// Bad: The comment is unnecessary as the code is self-explanatory
// Increment the counter by one
counter++;


// Good: The comment provides context that the code cannot
// We increment the counter here because the user has opened a new session
counter++;


// Bad: Comment restates the code
// Check if the user is logged in
if (user.isLoggedIn) {
  // ...
}


// Good: Explains why the condition is important
// Check if the user is logged in because only logged-in users have access to premium features
if (user.isLoggedIn) {
  // Code to provide access to premium features
}

18. 一致的编码风格

采用一致的编码风格或遵循风格指南(如 Airbnb 的 JavaScript 风格指南)以保持可读性。命名、间距和语法的一致性将使您的代码更易于遵循和维护。

// Bad: inconsistent spacing and naming
function calculatevalue(a,b){
 const total=a+b
return total;
}


// Good: consistent naming and spacing, following a common style guide
function calculateValue(a, b) {
  const total = a + b;
  return total;
}

19. 保持职能小而集中

每个功能应该做一件事,并且做好。小型、集中的函数更容易测试和调试。

// Bad: doing too much in one function
function handleUserData(user) {
  if (user.age < 18) {
    console.log('User is a minor');
  } else {
    console.log('User is an adult');
  }
  // Additional unrelated tasks...
}


// Good: breaking down into smaller, focused functions
function logUserAgeCategory(age) {
  const category = age < 18 ? 'minor' : 'adult';
  console.log(`User is a ${category}`);
}

20. 模块化你的代码

将您的代码分解为模块或组件。这不仅使其更易于管理,而且增强了可重用性。

// userValidation.js
export function isValidUser(user) {
  // Validation logic...
}


// app.js
import { isValidUser } from './userValidation.js';
if (isValidUser(user)) {
  // Proceed...
}

21. 避免使用幻数

用命名常量替换幻数,使代码更具可读性和可维护性。

const MAX_USERS = 10;


// Instead of
if (users.length > 10) {
  // Do something
}
// Use
if (users.length > MAX_USERS) {
  // Do something
}

22.简化条件表达式

为了清晰起见,将复杂的条件分解为变量或更小的函数。

const isEligibleForDiscount = (user) => user.age > 65 || user.memberStatus === 'VIP';


if (isEligibleForDiscount(user)) {
  // Apply discount
}

23. 谨慎使用注释

代码应该尽可能不言自明。使用注释来解释“为什么”而不是“什么”。

// Bad: unnecessary comment
// adds one to the number
const increment = (number) => number + 1;


// Good: comment explaining why
// We add 1 to include the last day of the range
const inclusiveEnd = (start, end) => end - start + 1;

24. 更喜欢组合而不是继承

组合提供了更大的灵活性,并降低了与深层继承层次结构相关的复杂性。

const canEat = {
  eat: function() {
    console.log('Eating');
  }
};


// Composition
const person = Object.assign({}, canEat);
person.eat(); // Eating

25. 封装代码块

封装处理特定任务的代码部分。这提高了可读性和可重用性。

function processOrder(order) {
  const validateOrder = (order) => {
    // Validation logic
  };

26. 了解最新功能

JavaScript 不断发展。及时了解最新功能可以帮助您编写更高效、更简洁的代码。

// Old way: callbacks
fs.readFile(filePath, function(err, data) {
  if (err) throw err;
  console.log(data);
});


// New way: async/await
async function readFileAsync(filePath) {
  try {
    const data = await fs.promises.readFile(filePath);
    console.log(data);
  } catch (err) {
    console.error(err);
  }
}

总结

接受这些技巧不仅可以提高您的 JavaScript 编码技能,还可以使您的代码库更易于维护且使用起来更愉快。请记住,编写干净代码的目标不仅仅是遵守规则,而是让您的代码尽可能清晰易懂,让其他人(包括未来的您)可以理解。

来源:web前端开发内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯