基于ES6作用域和解构赋值详解
ES6强制开启严格模式
作用域
•var声明局部变量,for/if花括号中定义的变量在花括号外也可访问
•let声明的变量为块作用域,变量不可重复定义
•const声明常量,块作用域,声明时必须赋值,不可修改
//const声明的k指向一个对象,k本身不可变,但对象可变 functiontest(){ constk={ a:1 } k.b=3; console.log(k); }
test()解构赋值
{ leta,b,3,rest; [a,b,c=3]=[1,2]; console.log(a,b); } //output:123 { leta,b,3,rest; [a,b,c]=[1,2]; console.log(a,b); } //output:12undefined { leta,b,rest; [a,b,...rest]=[1,2,3,4,5,6]; console.log(a,b,rest); } //output:12[3,4,5,6] { leta,b; ({a,b}={a:1,b:2}) console.log(a,b); } //output:12
使用场景
变量交换
{ leta=1; letb=2; [a,b]=[b,a]; console.log(a,b); }
获取多个函数值
{ functionf(){ return[1,2] } leta,b; [a,b]=f(); console.log(a,b); }
获取多个函数返回值
{ functionf(){ return[1,2,3,4,5] } leta,b,c; [a,,,b]=f(); console.log(a,b); } //output:14 { functionf(){ return[1,2,3,4,5] } leta,b,c; [a,...b]=f(); console.log(a,b); } //output:1[2,3,4,5]
对象解构赋值
{ leto={p:42,q:true}; let{p,q,c=5}=o; console.log(p,q); } //output:42true5
获取json值
{ letmetaData={ title:'abc', test:[{ title:'test', desc:'description' }] } let{title:esTitle,test:[{title:cnTitle}]}=metaData; console.log(esTitle,cnTitle); } //Output:abctest
以上这篇基于ES6作用域和解构赋值详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。