现在就可以使用的 20 个 JavaScript 技巧和窍门

2023-10-19 06:52

本文主要是介绍现在就可以使用的 20 个 JavaScript 技巧和窍门,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

今天探讨 20 种 JavaScript 技巧和窍门,每种技巧和窍门都有通俗易懂的示例。让我们一起来提升你的 JavaScript 技能吧!

1. 解构魔法:轻松提取值

解构允许你轻松地从数组或对象中解包值。以下是一个例子:

const person = { name: 'Alice’, age: 30 };
const { name, age } = person;
console.log(name); // Output: Alice
console.log(age); // Output: 30

2. 展开运算:克隆数组和合并对象

扩展运算符(...)让你能轻松地创建数组的副本并合并对象:

const originalArray = [1, 2, 3];
const clonedArray = [...originalArray];
console.log(clonedArray); // Output: [1, 2, 3]

合并对象:

const obj1 = { a: 1, b: 2 };
const obj2 = { b: 3, c: 4 };
const merged = { ...obj1, ...obj2 };
console.log(merged); // Output: { a: 1, b: 3, c: 4 }

3. map() 轻松实现转换

map()方法是你转换数据的秘密武器:

const numbers = [1, 2, 3];
const squared = numbers.map(num => num * num);
console.log(squared); // Output: [1, 4, 9]

4. 使用 &&|| 的短路操作:优雅的条件判断

使用 &&|| 来创建清晰简洁的条件语句:

const name = user.name || 'Guest';
console.log(name); // Output: Guest

5.串联 setTimeout():延迟序列化

setTimeout()链接起来可以创建一系列的延迟操作:

function delayedLog(message, time) {setTimeout(() => {console.log(message);}, time);
}
delayedLog('Hello', 1000); // Output (after 1 second): Hello

6. 箭头函数:简洁而强大

箭头函数(() => {})不仅简洁,而且还保留了this的值:

const greet = name => `Hello, ${name}!`;
console.log(greet(’Alice’)); // Output: Hello, Alice!

7. 掌握 Promise.all():处理多个 Promise

使用 Promise.all() 来合并多个承诺并集体处理它们:

const promise1 = fetch('url1');
const promise2 = fetch('url2');
Promise.all([promise1, promise2]).then(responses => console.log(responses)).catch(error => console.error(error));

8. 动态属性名称:多功能对象键

可以使用方括号将变量用作对象属性名称:

const key = 'name';
const person = { [key]: 'Alice' };
console.log(person.name); // Output: Alice

9. 模板字面量魔法:字符串格式化

模板字面量 (${}) 允许你在字符串中嵌入表达式:

const name = 'Alice';
const greeting = `Hello, ${name}!`;
console.log(greeting); // Output: Hello, Alice!

10. NaN 检查:更安全的替代方案

使用 Number.isNaN() 来准确地检查一个值是否为 NaN:

const notANumber = 'Not a number';
console.log(Number.isNaN(notANumber)); // Output: false

11. 可选链(?.):驯服未定义的值

在处理嵌套属性时,通过可选链来避免错误:

const user = { info: { name: 'Alice' } };
console.log(user.info?.age); // Output: undefined

12. 正则表达式复兴:掌握模式

正则表达式(RegExp)是用于模式匹配的强大工具:

const text = 'Hello, world!';
const pattern = /Hello/g;
console.log(text.match(pattern)); // Output: ['Hello']

13. JSON.parse() reviver:转换解析数据

JSON.parse()中的reviver参数允许你转换解析后的JSON:

const data = '{"age":"30"}';
const parsed = JSON.parse(data, (key, value) => {if (key === 'age') return Number(value);return value;
});
console.log(parsed.age); // Output: 30

14. 酷炫控制台技巧:调试的乐趣

使用console.table()console.groupCollapsed()超越console.log()

const users = [{ name: 'Alice' }, { name: 'Bob' }];
console.table(users);
console.groupCollapsed(’Details’);
console.log(’Name: Alice’);
console.log(’Age: 30’);
console.groupEnd();

15. 使用async/await获取:异步简易性

使用fetch()async/await简化了处理异步请求:

async function fetchData() {try {const response = await fetch('url');const data = await response.json();console.log(data);} catch (error) {console.error(error);}
}fetchData();

16. 无拘无束的闭包:数据隐私

闭包让你在函数中创建私有变量:

function createCounter() {let count = 0;return function () {count++;console.log(count);};
}const counter = createCounter();
counter(); // Output: 1
counter(); // Output: 2

17. 提高速度的缓存:高效重新计算

备忘录化通过缓存函数结果来提高性能:

function fibonacci(n, memo = {}) {if (n in memo) return memo[n];if (n <= 2) return 1;memo[n] = fibonacci(n - 1, memo) + fibonacci(n - 2, memo);return memo[n];
}console.log(fibonacci(10)); // Output: 55

18. IntersectionObserver:轻松的滚动效果

使用 Intersection Observer 者API进行懒加载和滚动动画:

const observer = new IntersectionObserver(entries => {entries.forEach(entry => {if (entry.isIntersecting) {entry.target.classList.add('fade-in');observer.unobserve(entry.target);}});
});const elements = document.querySelectorAll('.animate');
elements.forEach(element => observer.observe(element));

19. 清晰代码的ES6模块:有组织且模块化

使用ES6模块来编写整洁、模块化的代码:

// math.js
export function add(a, b) {return a + b;
}// app.js
import { add } from './math.js';
console.log(add(2, 3)); // Output: 5

20. Proxy:超越对象

代理允许你拦截并自定义对象操作:

const handler = {get(target, prop) {return `Property "${prop}" doesn't exist.`;}
};const proxy = new Proxy({}, handler);
console.log(proxy.name); // Output: Property "name" doesn’t exist.

配备了这20个JavaScript的小窍门和技巧,你已经有了足够的装备,可以将你的编程技能提升到新的水平。

欢迎长按图片加刷碗智为好友,定时分享 Vue React Ts 等。

4efa6ca0a6e21b2be475ae1b47f0ebea.png

最后:

vue2与vue3技巧合集

VueUse源码解读

6e0d7845b45597ddcebd8e7d42fcce8c.jpeg

这篇关于现在就可以使用的 20 个 JavaScript 技巧和窍门的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/238108

相关文章

vue基于ElementUI动态设置表格高度的3种方法

《vue基于ElementUI动态设置表格高度的3种方法》ElementUI+vue动态设置表格高度的几种方法,抛砖引玉,还有其它方法动态设置表格高度,大家可以开动脑筋... 方法一、css + js的形式这个方法需要在表格外层设置一个div,原理是将表格的高度设置成外层div的高度,所以外层的div需要

使用DeepSeek API 结合VSCode提升开发效率

《使用DeepSeekAPI结合VSCode提升开发效率》:本文主要介绍DeepSeekAPI与VisualStudioCode(VSCode)结合使用,以提升软件开发效率,具有一定的参考价值... 目录引言准备工作安装必要的 VSCode 扩展配置 DeepSeek API1. 创建 API 请求文件2.

使用TomCat,service输出台出现乱码的解决

《使用TomCat,service输出台出现乱码的解决》本文介绍了解决Tomcat服务输出台中文乱码问题的两种方法,第一种方法是修改`logging.properties`文件中的`prefix`和`... 目录使用TomCat,service输出台出现乱码问题1解决方案问题2解决方案总结使用TomCat,

解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题

《解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题》文章详细描述了在使用lombok的@Data注解标注实体类时遇到编译无误但运行时报错的问题,分析... 目录问题分析问题解决方案步骤一步骤二步骤三总结问题使用lombok注解@Data标注实体类,编译时

Java中使用Java Mail实现邮件服务功能示例

《Java中使用JavaMail实现邮件服务功能示例》:本文主要介绍Java中使用JavaMail实现邮件服务功能的相关资料,文章还提供了一个发送邮件的示例代码,包括创建参数类、邮件类和执行结... 目录前言一、历史背景二编程、pom依赖三、API说明(一)Session (会话)(二)Message编程客

C++中使用vector存储并遍历数据的基本步骤

《C++中使用vector存储并遍历数据的基本步骤》C++标准模板库(STL)提供了多种容器类型,包括顺序容器、关联容器、无序关联容器和容器适配器,每种容器都有其特定的用途和特性,:本文主要介绍C... 目录(1)容器及简要描述‌php顺序容器‌‌关联容器‌‌无序关联容器‌(基于哈希表):‌容器适配器‌:(

使用Python实现高效的端口扫描器

《使用Python实现高效的端口扫描器》在网络安全领域,端口扫描是一项基本而重要的技能,通过端口扫描,可以发现目标主机上开放的服务和端口,这对于安全评估、渗透测试等有着不可忽视的作用,本文将介绍如何使... 目录1. 端口扫描的基本原理2. 使用python实现端口扫描2.1 安装必要的库2.2 编写端口扫

使用Python实现操作mongodb详解

《使用Python实现操作mongodb详解》这篇文章主要为大家详细介绍了使用Python实现操作mongodb的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、示例二、常用指令三、遇到的问题一、示例from pymongo import MongoClientf

SQL Server使用SELECT INTO实现表备份的代码示例

《SQLServer使用SELECTINTO实现表备份的代码示例》在数据库管理过程中,有时我们需要对表进行备份,以防数据丢失或修改错误,在SQLServer中,可以使用SELECTINT... 在数据库管理过程中,有时我们需要对表进行备份,以防数据丢失或修改错误。在 SQL Server 中,可以使用 SE

使用Python合并 Excel单元格指定行列或单元格范围

《使用Python合并Excel单元格指定行列或单元格范围》合并Excel单元格是Excel数据处理和表格设计中的一项常用操作,本文将介绍如何通过Python合并Excel中的指定行列或单... 目录python Excel库安装Python合并Excel 中的指定行Python合并Excel 中的指定列P