ES6+
ES6
- 块级作用域:
letconst
javascript
let age = 18;
const PI = 3.14;- 解构赋值
javascript
const person = {
name: "张三",
age: 18,
gender: "男",
};
const { name, age, gender } = person;- 箭头函数
javascript
const add = (a, b) => a + b;- 模板字符串
javascript
const name = "张三";
const age = 18;
const message = `我的名字是${name},我${age}岁了。`;- 对象方法简写
javascript
const name = "张三";
const age = 18;
const person = {
name,
age,
sayHello() {
console.log(`你好,我是${name},我${age}岁了。`);
},
};- 展开运算符
javascript
const person1 = {
name: "张三",
age: 18,
gender: "男",
},
person2 = {
...person1,
age: 20,
};- rest 运算符
javascript
function sum(...nums) {
return nums.reduce((a, b) => a + b);
}- 对象扩展
javascript
// let userName = 'wangcai';
// let userAge = 18;
// let person = {
// userName,
// userAge,
// sayHello: function() {
// console.log('你好')
// }
// }
// person.sayHello();
let userName = "wangcai";
let userAge = 18;
let person = {
userName,
userAge,
sayHello() {
console.log("Hello");
},
};
person.sayHello();Symbol
Proxy
Set、WeakSet
Map、WeakMap
class
ES7
- includes
javascript
[1, 2, 3].includes(2); // true- 指数运算符
javascript
2 ** 3; // 8ES8
Object.values() 和 Object.entries()
padStart() 和 padEnd()
Object.getOwnPropertyDescriptors()
Trailing Commas(函数定义和调用时多加一个逗号)
ES9
async
finally
对展开运算符增强(进行扩展或修改)
javascript
const obj1 = { a: 1, b: 2 };
const obj2 = { ...obj1, c: 3 }; // 使用对象展开运算符创建新对象 obj2,包含 obj1 的属性,并添加一个新属性 c
console.log(obj2); // 输出: { a: 1, b: 2, c: 3 }ES10
flat()、flatMap()
Object.formEntries()
trimStart()、trimEnd()
ES11
BigInt
空值合并操作符
??可选链
?.globalThis
for..in 标准化
ES12
- 逻辑赋值运算符
||=、??=、&&=
ES13
Object.hasOwn()
method.at()
新增了定义 class 类中成员字段