本帖最后由 AreYouGlad 于 2017-12-20 11:55 编辑
解构赋值
按照一定的模式,从数组和对象中提取值,然后对变量进行赋值 数组解构[JavaScript] 纯文本查看 复制代码 let arr = [10, 20, 30];
let [ a, b, c ] = arr;
console.log(a); // 10
console.log(b); // 20
console.log(c); // 30
[JavaScript] 纯文本查看 复制代码 let [ a, , c ] = [10, 20, 30];
console.log(a); // 10
console.log(c); // 30
[JavaScript] 纯文本查看 复制代码 let [ a, b, c ] = [10, [ 20, 21, 22 ], {a: 1, b: 2}];
console.log(a); // 10
console.log(b); // [ 20, 21, 22 ]
console.log(c); // {a: 1, b: 2}
[JavaScript] 纯文本查看 复制代码 let [ a, [b1, b2] ] = [10, [ 20, 21, 22 ], 30];
console.log(a); // 10
console.log(b1); // 20
console.log(b2); // 21
[JavaScript] 纯文本查看 复制代码 let [ a, b ] = [10];
console.log(a); // 10
console.log(b); // undefined
[JavaScript] 纯文本查看 复制代码 let [ a = 'aa', b = 'bb' ] = [10];
console.log(a); // 10
console.log(b); // bb
对象解构
[JavaScript] 纯文本查看 复制代码 let { a, b, c } = { a: 10, b: 20, c: 30 };
console.log(a); // 10
console.log(b); // 20
console.log(c); // 30
[JavaScript] 纯文本查看 复制代码 let { a, c } = { a: 10, b: 20, c: 30 };
console.log(a); // 10
console.log(c); // 30
[JavaScript] 纯文本查看 复制代码 let { a, b, c } = { a: 10, b: [20, 21, 22], c: { c1: 30, c2: 31 } };
console.log(a); // 10
console.log(b); // [20, 21, 22]
console.log(c); // { c1: 30, c2: 31 }
[JavaScript] 纯文本查看 复制代码 let { b: [ b1, b2 ], c: { c1, c2 } } = { a: 10, b: [20, 21], c: { c1: 30, c2: 31 } };
console.log(b); // RefrenceError
console.log(b1); // 20
console.log(b2); // 21
console.log(c); // RefrenceError
console.log(c1); // 30
console.log(c2); // 31
[JavaScript] 纯文本查看 复制代码 // 对象深层解构时前面的引导符不算变量,如有需要,需单独解构
let { c, c: { c1, c2 } } = { a: 10, b: [20, 21], c: { c1: 30, c2: 31 } };
console.log(c); // { c1: 30, c2: 31 }
console.log(c1); // 30
console.log(c2); // 31
[JavaScript] 纯文本查看 复制代码 let { a, b } = { a: 10 };
console.log(a); // 10
console.log(b); // undefined
[JavaScript] 纯文本查看 复制代码 let { a = 'aa', b = 'bb' } = { a: 10 };
console.log(a); // 10
console.log(b); // bb
[JavaScript] 纯文本查看 复制代码 let { a: myA } = { a: 10 };
console.log(myA); // 10
console.log(a); // ReferenceError
使用场景
[JavaScript] 纯文本查看 复制代码 let a = 10, b = 20, c = 30;
// 注意这里a b c已经声明了,就不用再声明了
[a, b, c] = [ b, c, a ];
console.log(a, b, c);
[JavaScript] 纯文本查看 复制代码 let ajaxResponseData = {
code: 200,
msg: '成功',
result: {
name: '车',
info: '各种车',
list: ['兰博基尼', '法拉利']
}
};
// 解构提取result中info与list的值
let { result: { info, list } } = ajaxResponseData;
console.log(info);
console.log(list);
[JavaScript] 纯文本查看 复制代码 function fn() {
let obj = {};
return {
get: function(key){
return obj[key];
},
set: function(key, val){
obj[key] = val;
}
};
}
// 解构fn的返回值
let { get, set } = fn();
set('fib', [1, 1, 2, 3, 5, 8, 13]);
get('fib');
``字符串
新的字符串定义方式。
[JavaScript] 纯文本查看 复制代码 let str = `第一行第一行
第二行第二行`;
console.log(str);
[JavaScript] 纯文本查看 复制代码 // 可以访问变量、调用函数、及各种表达式运算
let mei = {
name: '小美',
age: 16
};
let str = `${ mei.name }今年${ mei.age }了,
还有${ 30 - mei.age }年他就30了`;
console.log(str);
语句
for of
新的循环语句,可遍历数组得到里面的每个值,也可以遍历Set与Map以及内置的类数组的对象
[JavaScript] 纯文本查看 复制代码 let arr = ['a', 'b', 10, 20];
for(let v of arr) {
console.log(v); // 'a', 'b', 10, 20
}
|
|