当前位置: 首页 > news >正文

JavaScript ES6+ 语法速通

一、ES6 基础语法

1. letconst 声明变量

  • let:块级作用域,可以重新赋值。
  • const:块级作用域,声明常量,不能重新赋值。
let name = 'Li Hua';
name = 'Li Ming'; // 可修改const age = 21;
// age = 22; // 报错,const 不能重新赋值

2. 模板字符串

使用反引号 `,支持 字符串插值多行字符串

const name = 'Li Hua';
const age = 21;const message = `Hello, my name is ${name}. I'm ${age} years old.`;
console.log(message);const multiLine = `这是一行
这又是另一行`;
console.log(multiLine);

3. 解构赋值

  • 数组解构
const [a, b, c] = [1, 2, 3];
console.log(a, b, c); // 1, 2, 3
  • 对象解构
const person = { name: 'Li Hua', age: 21 };
const { name, age } = person;
console.log(name, age); // 'Li Hua', 21
  • 默认值
const { city = 'Wuhan' } = {};
console.log(city); // 'Wuhan'

4. 箭头函数

箭头函数简化写法,并且不会绑定 this

const sum = (a, b) => a + b;
console.log(sum(3, 4)); // 7const square = n => n * n;
console.log(square(5)); // 25

5. 扩展运算符 ...

  • 数组展开
const arr1 = [1, 2, 3];
const arr2 = [...arr1, 4, 5];
console.log(arr2); // [1, 2, 3, 4, 5]
  • 对象合并
const obj1 = { a: 1, b: 2 };
const obj2 = { ...obj1, c: 3 };
console.log(obj2); // { a: 1, b: 2, c: 3 }
  • 函数参数
function sum(...numbers) {return numbers.reduce((a, b) => a + b, 0);
}
console.log(sum(1, 2, 3, 4)); // 10

6. 默认参数

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

7. for…of 遍历

const arr = [1, 2, 3];
for (const num of arr) {console.log(num);
}

8. Promise 和异步操作

const fetchData = new Promise((resolve, reject) => {setTimeout(() => resolve('数据加载成功'), 2000);
});fetchData.then(data => console.log(data)).catch(err => console.log(err));

二、ES7+ 高级语法

1. ES7:includes 方法

const arr = [1, 2, 3];
console.log(arr.includes(2)); // true
console.log(arr.includes(5)); // false

2. ES8:Async/Await

function delay(ms) {return new Promise(resolve => setTimeout(resolve, ms));
}async function loadData() {console.log('开始加载...');await delay(2000);console.log('数据加载成功');
}loadData();

3. ES9:对象的 Rest 和 Spread

  • Rest 参数
const { a, ...rest } = { a: 1, b: 2, c: 3 };
console.log(rest); // { b: 2, c: 3 }
  • 对象展开
const obj = { ...{ a: 1 }, b: 2 };
console.log(obj); // { a: 1, b: 2 }

4. ES10:Optional Catch Binding

try {throw new Error('出错了');
} catch {console.log('捕获异常');
}

5. ES11:可选链操作符 ?.

const user = { name: 'Li Hua', address: { city: 'Wuhan' } };
console.log(user.address?.city); // 'Wuhan'
console.log(user.contact?.phone); // undefined

6. ES12:逻辑赋值运算符

let a = null;
a ??= 'default';
console.log(a); // 'default'let b = 5;
b &&= 10;
console.log(b); // 10
http://www.lryc.cn/news/503508.html

相关文章:

  • 移动端h5自适应rem适配最佳方案
  • 2024年使用 Cython 加速 Python 的一些简单步骤
  • EasyExcel设置表头上面的那种大标题(前端传递来的大标题)
  • 【Linux网络编程】第十弹---打造初级网络计算器:从协议设计到服务实现
  • 无限弹窗?无限重启?
  • 深入详解人工智能机器学习常见算法中的K-means聚类
  • lc146LRU缓存——模仿LinkedHashMap
  • 全面深入解析:C语言动态库
  • 运用 SSM 实现垃圾分类系统智能化升级
  • LeNet-5:深度学习与卷积神经网络的里程碑
  • 从资产流动分析WIF市场潜力X.game深究其他未知因素
  • 深入解析Vue3响应式系统:从Proxy实现到依赖收集的核心原理
  • FPGA实现GTP光口数据回环传输,基于Aurora 8b/10b编解码架构,提供2套工程源码和技术支持
  • Linux网络 UDP socket
  • 如何持续优化呼叫中心大模型呼入机器人的性能?
  • 鸿蒙项目云捐助第四讲鸿蒙App应用的登陆注册页实现
  • Windows本地搭建Redis集群(集群模式)
  • 使用FastGPT制做一个AI网站日志分析器
  • 探索 Echarts 绘图:数据可视化的奇妙之旅
  • 网络基础(IP和端口)
  • UE4与WEB-UI通信
  • 前缀和与差分算法详解
  • 《深入探究:C++ 在多方面对 C 语言实现的优化》
  • React 第十六节 useCallback 使用详解注意事项
  • 使用C#和OPenCV实现圆形检测
  • 评估一套呼叫中心大模型呼入机器人的投入回报比?
  • 十八、Label 和 Selector
  • 实现按键按下(低电平)检测到下降沿
  • 解析 SSM 垃圾分类系统,助力生态平衡
  • 软件工程 设计的复杂性