关键字 | 变量提高 | 块级做用域 | 初始值 | 更改值 | 经过window调用 |
---|---|---|---|---|---|
var | √ | x | - | Yes | Yes |
let | x | √ | - | Yes | No |
const | x | √ | Yes | No | No |
// 1.变量和值一一对应
let arr = [1, 2, 3];
let [a, b, c] = arr;
console.log(a,b,c); // 1 2 3
复制代码
// 2. 变量多,值少
let arr = [1, 5, 8];
let [a, b, c, d] = arr;
console.log(a, b, c, d); // 1 5 8 undefined
复制代码
// 3. 变量少,值多
let arr = [5, 9, 10, 8, 3, 2];
let [a, b] = arr;
console.log(a, b); // 5, 9
复制代码
// 4.按需取值
let arr = [5, 9, 10, 8, 3, 2];
let [, , a, , b] = arr; // 不须要用变量接收的值,用空位占位
console.log(a, b); // 10, 3
复制代码
// 5.剩余值
let arr = [5, 9, 10, 8, 3, 2];
let [a, b, ...c] = arr; // ...c 接收剩余的其余值,获得的c是一个数组
console.log(a, b, c);
// 结果:
// a = 5,
// b = 9,
// c = [10, 8, 3, 2]
复制代码
// 6.复杂的状况,只要符合模式.便可解构
let arr = ['zhangsan', 18, ['175cm', '65kg']];
let [, , [a, b]] = arr;
console.log(a, b); // 175cm 65kg
复制代码
// 1. 变量名和属性名同样
let { foo, bar } = {foo: 'aaa', bar: 'bbb'};
console.log(foo, bar); // aaa, bbb
let {a, c} = {a: 'hello', b: 'world'};
console.log(a, c); // hello, undefined
复制代码
// 2. 经过 :来更改变量名
let {a, b:c} = {a: 'hello', b: 'world'};
console.log(a, c); // hello, world
复制代码
// 3. 变量名和属性名一致便可获取到值,不须要一一对应
let {b} = {a: 'hello', b: 'world'};
console.log(b); // world
复制代码
// 4. 剩余值
let obj = {name:'橘右京', age:20, gender:'男'};
let {name, ...a} = obj;
console.log(name, a); // name = zs a = {age: 20, gender: "男"};
复制代码
// 5. 复杂状况,只要符合模式,便可解构
let obj = {
name: '不知火舞',
age: 22,
dog: {
name: '娜可露露',
age: 13
}
};
let {dog: {name, age}} = obj;
console.log(name, age); // 娜可露露 13
复制代码
// 假设服务器上的获取的数据以下
let res = {
data: ['a', 'b', 'c'],
meta: {
code: 200,
msg: '获取数据成功'
}
}
// 如何获取到 code 和 msg
let { meta: { code, msg } } = res;
console.log(code, msg); // 200, 获取数据成功
复制代码
this
指向外部做用域中的this
,箭头函数没有本身的this
arguments
// ES5 中给参数设置默认值的变通作法
function fn(x, y) {
y = y || 'world';
console.log(x, y);
}
fn(1)
// ES6 中给函数设置默认值
function fn(x, y = 'world') {
console.log(x, y);
}
fn(2)
fn(2,3)
复制代码
// 参数不少,不肯定多少个,可使用剩余参数
function fn(...values) {
console.log(values); // [6, 1, 100, 9, 10]
}
// 调用
console.log(fn(6, 1, 100, 9, 10));
复制代码
rest参数只能是最后一个参数 数组
// 合并两个数组
let arr1 = [1, 2];
let arr2 = [3, 4];
let arr3 = [...arr1, ...arr2];
console.log(arr3); // [1, 2, 3, 4]
复制代码
let fakeArr = {
0: 'a',
1: 'b',
2: 'c',
length: 3
};
let arr = Array.from(fakeArr);
console.log(arr); // ['a', 'b', 'c']
复制代码
[...new Set(arr)]
方式二: Array.from(new Set(arr))
class之间能够经过extends关键字实现继承,bash
Promise解决了回调地狱的问题,回调地狱指一个函数中有太多的异步操做,会产生大量的嵌套,难以阅读和维护.服务器
Promise会让代码变得更容易维护,像写同步代码同样,业务逻辑性更易懂异步