10个超实用JavaScript技巧:让你的代码更简洁、更优雅

更新日期: 2026-03-16 阅读: 24 标签: 技巧

JavaScript 是前端开发的核心。用好它,能让你的代码更简洁,运行更快,维护起来也更轻松。

今天,我们不谈那些复杂的概念,就说说十个非常实用的小技巧。这些技巧能立刻用在你的项目里。


1. 用逻辑运算符简化条件判断

写代码时,我们经常需要根据条件给变量赋值。很多人会写很长的 if...else 语句。其实有更简单的办法。

看看这段代码:

let username;
if (name) {
  username = name;
} else {
  username = '匿名用户';
}

你可以用逻辑或运算符 || 来简化它:

let username = name || '匿名用户';

如果 name 为真(比如有值),username 就等于 name。如果 name 为假(比如是 null、undefined 或空字符串),username 就等于默认用户。一行代码就搞定了。

逻辑与运算符 && 也很有用。它可以用来做条件执行:

// 传统的if写法
if (isLoggedIn) {
  fetchUserData();
}

// 使用&&的简洁写法
isLoggedIn && fetchUserData();

只有当 isLoggedIn 为真时,才会执行 fetchUserData() 函数


2. 使用模板字符串拼接内容

以前拼接字符串要用加号 +,很麻烦,还容易出错:

let greeting = '你好,' + name + '!今天是' + day + '。';

现在有了模板字符串,一切都变简单了。用反引号(`)包裹字符串,变量用 ${} 包起来就行:

let greeting = `你好,${name}!今天是${day}。`;

这样写更清晰,也更不容易出错。模板字符串还支持多行文本,不用再写 \n 了。


3. 解构赋值:快速提取数据

从对象或数组里拿数据,你还在用点号或方括号一个个取吗?试试解构赋值。

从对象里解构:

const user = { name: '小明', age: 25, city: '北京' };

// 老方法
const name = user.name;
const age = user.age;

// 解构赋值
const { name, age } = user;
console.log(name); // 小明
console.log(age);  // 25

你可以只取需要的属性,还可以给变量换名字:

const { name: userName, city = '上海' } = user; // 如果user里没有city,就用默认值'上海'

从数组里解构:

const numbers = [1, 2, 3, 4];
const [first, second] = numbers;
console.log(first);  // 1
console.log(second); // 2

交换两个变量的值,用解构赋值特别方便:

let a = 1, b = 2;
[a, b] = [b, a]; // 现在 a=2, b=1


4. 展开运算符 ... 的妙用

展开运算符是三个点 ...。它能把数组“展开”,或者把对象的属性“展开”。

合并数组:

const arr1 = [1, 2];
const arr2 = [3, 4];
const combined = [...arr1, ...arr2]; // [1, 2, 3, 4]

这比用 concat() 方法更直观。

复制数组或对象:

在 JavaScript 里,直接赋值是浅拷贝,修改新变量会影响原数据。用展开运算符可以快速创建一个浅拷贝:

const originalArray = [1, 2, 3];
const copyArray = [...originalArray]; // 这是一个新的数组

const originalObj = { a: 1 };
const copyObj = { ...originalObj }; // 这是一个新的对象
注意:这只是浅拷贝。如果数组或对象里嵌套了其他对象,那么嵌套的部分还是引用关系。

函数传参:

可以把一个数组“展开”成独立的参数传给函数:

const numbers = [10, 5, 8];
Math.max(...numbers); // 相当于 Math.max(10, 5, 8)


5. 可选链 ?.:安全地访问深层属性

你想访问一个深层嵌套的属性,比如 user.address.street。但如果 user 或者 address 是 null 或 undefined,代码就会报错。

传统的安全写法很啰嗦:

let street;
if (user && user.address) {
  street = user.address.street;
}

可选链操作符 ?. 能让你安全地访问:

const street = user?.address?.street;

如果 user 或 address 是 null 或 undefined,表达式会立刻停止,返回 undefined,而不会报错。

它还可以和安全调用函数一起用:

const result = someObject.someMethod?.(); // 如果someMethod存在才调用


6. 空值合并 ??:提供更合理的默认值

我们之前用 || 来设置默认值。但 || 有个问题:它会把所有“假值”(比如 0、'' 空字符串、false)都当成无效的,而有时这些值是有意义的。

空值合并运算符 ?? 只会在左边的值是 null 或 undefined 时,才返回右边的默认值:

let count = 0;
let displayCount = count || '未设置'; // displayCount 会是 '未设置',因为0是假值
let displayCount2 = count ?? '未设置'; // displayCount2 会是 0,这才是我们想要的


7. 使用 Array.includes() 进行多条件判断

检查一个变量是否等于多个值中的一个,你可能会这样写:

if (fruit === 'apple' || fruit === 'orange' || fruit === 'banana') {
  // ...
}

用 Array.includes() 可以让代码更整洁:

const validFruits = ['apple', 'orange', 'banana'];
if (validFruits.includes(fruit)) {
  // ...
}

如果要判断的条件很多,这种写法的优势就更明显了。而且,你可以把 validFruits 数组定义在别处,方便统一管理。


8. 简化对象属性赋值

当变量名和要创建的对象属性名一样时,可以省略键值对的写法:

const name = '小红';
const age = 30;

// 传统写法
const user = {
  name: name,
  age: age
};

// 简写写法
const user = {
  name,
  age
};

定义对象方法也可以简写:

// 传统写法
const obj = {
  sayHello: function() {
    console.log('Hello');
  }
};

// 简写写法
const obj = {
  sayHello() {
    console.log('Hello');
  }
};


9. 使用 Array.find() 和 Array.findIndex() 查找元素

在数组里找一个符合条件的元素,以前常用 for 循环。现在有更直接的方法。

Array.find() 返回第一个满足条件的元素本身:

const users = [
  {id: 1, name: '张三'},
  {id: 2, name: '李四'},
  {id: 3, name: '王五'}
];
const user = users.find(u => u.id === 2);
console.log(user); // {id: 2, name: '李四'}

Array.findIndex() 返回第一个满足条件的元素的索引:

const index = users.findIndex(u => u.id === 2);
console.log(index); // 1

如果没找到,find() 返回 undefined,findIndex() 返回 -1。


10. 用 Set 给数组去重

给数组去掉重复项是一个常见需求。自己写循环当然可以,但用 Set 对象最简单。Set 是一种新的数据结构,它里面的值都是唯一的。

const duplicateNumbers = [1, 2, 2, 3, 4, 4, 5];
const uniqueNumbers = [...new Set(duplicateNumbers)];
console.log(uniqueNumbers); // [1, 2, 3, 4, 5]

步骤很简单:

  1. new Set(array) 把数组转成一个 Set,自动去重。

  2. [...set] 用展开运算符再把 Set 转回数组。

对于简单数据类型(数字、字符串)的去重,这个方法非常高效。对于对象数组,则需要根据具体属性进行判断。


这些技巧都不难理解。关键是要在写代码的时候想起来用。

下次当你又要写一个长长的 if 判断,或者为拼接字符串发愁时,不妨先停下来想想:“有没有更简单的写法?”多练习几次,它们就会变成你的习惯。

本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://fly63.com/article/detial/13425

相关推荐

20个让你效率更高的CSS代码技巧

在本文中,我们想与您分享一个由各大CSS网站总结推荐的20个有用的规则和实践经验集合。有一些是面向CSS初学者的,有一些知识点是进阶型的。希望每个人通过这篇文章都能学到对自己有用的知识

微信小程序分享到朋友圈方法与技巧

小程序提供onShareAppMessage 函数,此函数只支持分享给我微信朋友,小程序如何分享到朋友圈呢?使用canvas绘制一张图片,并用wx.previewImage预览图片,然后长按图片保存图片到手机。

小技巧:检查你本地及公共 IP 地址

本地的 IP 地址是分配给你计算机上的内部硬件或虚拟网卡的本地/私有 IP 地址。根据你的 LAN 配置,上述 IP 地址可能是静态或动态的。公共的 IP 地址是你的 Internet 服务提供商(ISP)为你分配的公共/外部 IP 地址。

前端新手程序员不知道的 20个小技巧

前端新手程序员不知道的 20个小技巧:作为前端开发者,使用双显示器能大幅提高开发效率、学编程最好的语言不是PHP,是English、东西交付之前偷偷测试一遍、问别人之前最好先自己百度,google一下、把觉得不靠谱的需求放到最后做,很可能到时候需求就变了...

12 个 CSS 高级技巧汇总

使用 :not() 在菜单上应用/取消应用边框;给body添加行高;所有一切都垂直居中;逗号分隔的列表;使用负的 nth-child 选择项目;对图标使用SVG;优化显示文本;对纯CSS滑块使用 max-height;继承 box-sizing

探讨Js奇技淫巧

Js 是一门灵活的语言(手动滑稽)。应该多学习一些奇技淫巧,因为很多奇技淫巧往往代表一些混合的知识,往往会有一些新奇的思考与体验(怎么我想不出来?)

提高网站加载速度的一些小技巧

为你网站的用户留下良好的第一印象是非常必要的。随着商业领域的竞争,拥有一个吸引人的网站可以帮助你脱颖而出。研究表明,如果加载时间超过3秒,会有 40% 的用户放弃访问你的网站

去除桌面快捷方式上的小箭头

电脑桌面上默认快捷方式左下角是有个小箭头的。很多用户可能不习惯快捷方式小箭头。那怎么去掉呢?新建一个TXT文档(文档的名称自己顺便命名即可),然后把下面的这些英文全部复制到TXT文档内保存。把TXT文档的扩展名改成 .bat

26 个 jQuery使用技巧

禁用右键点击;禁用搜索文本框;新窗口打开链接;检测浏览器;预加载图片;样式筛选;列高度相同;字体大小调整;返回页面顶部;获取鼠标的xy坐标;验证元素是否为空;替换元素

微信小程序技巧_你需要知道的小程序开发技巧

一直以来进行了比较多的微信小程序开发... 总会接触到一些和官方组件或 api 相关或其无法解决的需求,于是决定在这里小小的整理一下微信小程序开发的一些技巧

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!