JavaScript ES6+ 语法速通

server/2024/12/16 8:23:57/

一、ES6 基础语法

1. letconst 声明变量

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

2. 模板字符串

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

javascript">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. 解构赋值

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

4. 箭头函数

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

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

5. 扩展运算符 ...

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

6. 默认参数

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

7. for…of 遍历

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

8. Promise 和异步操作

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

二、ES7+ 高级语法

1. ES7:includes 方法

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

2. ES8:Async/Await

javascript">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 参数
javascript">const { a, ...rest } = { a: 1, b: 2, c: 3 };
console.log(rest); // { b: 2, c: 3 }
  • 对象展开
javascript">const obj = { ...{ a: 1 }, b: 2 };
console.log(obj); // { a: 1, b: 2 }

4. ES10:Optional Catch Binding

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

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

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

6. ES12:逻辑赋值运算符

javascript">let a = null;
a ??= 'default';
console.log(a); // 'default'let b = 5;
b &&= 10;
console.log(b); // 10

http://www.ppmy.cn/server/150573.html

相关文章

jmeter CLI Mode 传参实现动态设置用户数

一.需求 CLI 运行模式下每次运行想要传入不同的用户数,比如寻找瓶颈值的场景,需要运行多次设置不同的用户数。 二.解决思路 查看官方API Apache JMeter - Users Manual: Getting Started api CLI Mode 一节中提到可以使用如下参数做属性的替换&#…

c++总复习

C 中多态性在实际项目中的应用场景 图形绘制系统 描述:在一个图形绘制软件中,可能有多种图形,如圆形、矩形、三角形等。这些图形都有一个共同的操作,比如绘制(draw)。通过多态性,可以定义一个基…

一个初始化bitmap的小算法

一个初始化bitmap小算法 根据长度,创建bitmap初始化bitmap 根据长度,创建bitmap 看到一个开源项目,利用bitmap存储数据,其中创建和初始化过程,比较经典。这里摘录出来,以备后续使用。代码采用的是golang …

Sentinel一分钟

前置 Qps:每秒查询率 吞吐量:指系统在单位时间内处理请求的数量 资源:我们代码中的 Java 方法,一段代码,或者一个接口 限流 核心: 对资源(url或其他)进行限流可对资源和来源进行限流可调用openapi自动生成规则或平…

国内CentOS使用yum安装docker和docker-compose

安装docker 安装需要的软件包, yum-util 提供yum-config-manager功能,另两个是devicemapper驱动依赖 yum install -y yum-utils device-mapper-persistent-data lvm2下载yum源采用阿里云的镜像源 wget -O /etc/yum.repos.d/docker-ce.repo https://mi…

RabbitMQ快速入门 - 生产者和消费者的简单实现

引入依赖 <dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><version>5.7.3</version> </dependency> 编写生产者代码 RabbitMQ 默认的⽤于客户端连接的 TCP 端⼝号是 5672, 需要提前进⾏开…

泷羽sec学习打卡-brupsuite8伪造IP和爬虫审计

声明 学习视频来自B站UP主 泷羽sec,如涉及侵权马上删除文章 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都 与本人无关,切莫逾越法律红线,否则后果自负 关于brupsuite的那些事儿-Brup-FaskIP 伪造IP配置环境brupsuite导入配置1、扩展中先配置python环境2、安…

3D 生成重建030-SV3D合成环绕视频以生成3D

3D 生成重建030-SV3D合成环绕视频以生成3D 文章目录 0 论文工作1 论文方法2 实验结果 0 论文工作 论文提出了Stable Video 3D (SV3D)——一个用于生成围绕三维物体的高分辨率图像到多视角视频的潜在视频扩散模型。最近关于三维生成的文献提出了将二维生成模型应用于新视图合成…