1 let声明变量
1.1 let会形成独立的作用域
for (var i = 0; i < 3; i++) {
setTimeout(() => console.log(i))
}
for (let i = 0; i < 3; i++) {
setTimeout(() => console.log(i))
}
1.2 不允许变量提升
1.3 不允许定义重复变量
2 解构赋值
结构上要对应⭐
2.1 数组解构
- 数组结构需要[]将变量包裹
2.2.1 正常解构
let arr = [1, 2, 3]
let [a, b, c] = arr
console.log(a, b, c);
2.2.2 缺省解构
1 只解构前部分
let arr = [1, 2, 3]
let [a, b] = arr
console.log(a, b);
2 逗号分隔
let arr = [1, 2, 3]
let [a, , c] = arr
console.log(a, c);
3 省略号
[a, b, c, ...rest] = [100, 200, 300, 400, 500];
console.log(rest);
2.2 对象解构
2.2.1 名称相同解构
let { name, age } = { name: "Aeroxian, age: 25 }
console.log(name, age)
{ a, b, ...rest} = { a: 100, b: 200, c: 300, d: 400, e: 500 }
console.log(rest) // {c: 300, d: 400, e: 500}
const person = {
name: 'John Doe',
age: 32,
city: 'Miami',
gender: 'Male',
sayHello: function(){
console.log('Hello');
}
}
const { name, age, city, sayHello } = person;
sayHello()
2.2.2 别名解构
let { name: nameAlias, age: ageAlias } = { name: "Aeroxian", age: 25 }
console.log(nameAlias, ageAlias)
2.2.3 默认解构
let { name, school = "CAU" } = { name: "Aeroxian", age: 25 }
console.log(name, school)
1 默认解构在函数形参中应用
function fn({ method = "GET", data }) {
console.log(method, data);
}
fn({ data: "Order1" })
fn({ method: "POST", data: "Order2" })
3 展开运算符
3.1 数组展开
let arr1 = [1, 2], arr2 = [3, 4]
let arr3 = [...arr1, ...arr2]
3.2 对象展开
let person = { name: "Aeroxian", age: 25 },
pos = { school: "CAU", city: "Beijing" };
let result = { ...person, ...pos };
3.3 剩余运算符(区别)
- 这里不是展开运算符
- 而是剩余运算符
function fn(param, ...num) {
console.log(param, num);
}
fn(1, 2, 3)