ES6语法学习笔记之let const 解构赋值

let

let a=12;
function fn(){
    alert(a);//TDZ开始,暂时性死区
    let a=5;//TDZ结束
}
fn();
复制代码

let声明的变量不会预解析或者变量提升,所以现在的结果是报错,a没有定义。

如果把alert(a)下移一行,得出的结果则是5。

注意:let声明的变量一定要先定义再使用!且不能重复定义。

在for循环中,里面是父级作用域,

for(let i=0;i<10;i++){
    console.log(i);//依次输出从0到9
}
alert(i);//报错,i未定义,因为不在i的作用域
复制代码
for(let i=0;i<3;i++){
    let i='abc';//这里和括号里是不同的作用域,因此这里再次给i赋值,不算重复定义。
    console.log(i);//输出3次abc
}
复制代码

const

const a;
a=12;
console.log(a);
复制代码

const定义完变量,必须有值,不能后赋值.

const a=12;
function show(){
    console.log(a);//TDZ开始,暂时性死区
    const a = 5;//TDZ结束
}
show();
复制代码

解构赋值

// let arr=[12,5,6];
let [a,b,c]=[12,5,6];

//console.log(arr[0],arr[1],arr[2]);
console.log(a,b,c);
复制代码
let json={
    name:"suosuo",
    age:"16",
    job:"machu"
};

let {name,age,job} = json;
console.log(name,age,job);
复制代码

如上代码还有如下写法:

let json={
    name:"suosuo",
    age:"16",
    job:"machu"
};

let {name,age,job:a} = json;//给job换一个说法,并不是把"machu"换成a
console.log(name,age,a);
复制代码

解构时,可以给空数据默认值,但要注意,null表示空对象,也算是有值,不能给定默认值。

let [a,b,c="暂无数据"]=["aa","bb"];//可以给空数据给定默认值
console.log(a,b,c);
复制代码
let [a,b,c="暂无数据"]=["aa","bb",null];//null表示有值,所以这里不能给默认值
console.log(a,b,c);
复制代码
let {a,b}={a:'apple',b:'banana'};
console.log(a,b);
复制代码
let a;
{a}={a:'apple',b:'banana'};
console.log(a);
复制代码

如上代码会报错,但如果将第二行改为如下就没问题:

let a;
({a}={a:'apple',b:'banana'});
console.log(a);
复制代码

如何互换两个let变量的值?

let a=12;
let b=5;
[a,b]=[b,a];
console.log(a,b);
复制代码

解构赋值还可用函数返回值:

function getPos(){
    //xxxxx
    return{
        left:10,
        top:20
    }
}
let{left,top:t}=getPos();
console.log(left,t);
复制代码

解构赋值可以用于函数传参:

function show({a,b}){
    console.log(a,b);
}
show({
a:1,
b:2})
复制代码

如果用let声明时未赋值,解构赋值时外边要加()。

let a;
let b;
({a,b}={a:'apple',b:'banana'});
console.log(a,b);
复制代码

转载于:https://juejin.im/post/5c480f4ae51d4518b035fe44

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值