基于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作用域和解构赋值详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。