let和const
function test(){
//let a = 1;
//console.log(a)
for(let i=1;i<3;i++){
console.log(i)//正常打印
}
console.log(i)//报错
}
test()
let只在块作用域里面有效,ES6强制开启严格模式,变量未声明不能引用!切不能重复声明一个同名变量。
const声明常量。声明即赋值,切不能再次赋值!这句话只适用于赋值的是一个非引用类型,如果const声明的常量为一个引用类型,如object,array,则可以修改值本身。例如:const obj = { a:2}, obj.a =1,这样是可以修改的!
结构赋值
左边一个结构,右边一个结构,左右一一对应,进行赋值。如果结构赋值在结构上没有配对成功,则变量就为undefined
数组结构赋值:左右都是数组。
{
let a,b,rest;
[a,b] = [1,2]
let n,m,k;
[n,m,...k] = [1,2,3,4,5,6]
n=1,m=[2,3,4,5],k=6
}
{
let a,b,c
[a,b,c=3]=[1,2]
现在a=1,b=2,c=3,如果c没有给默认值则为undefined
}
{
let a=1;
let b=2;
[a,b]=[b,a]
}
{
function f(){
return [1,2]
}
let a,b
[a,b] = f()
}
对象结构赋值:左右都是对象。
{
let a,b;
({a,b}={a:1,b:2})
}
{
let metaData = {
title:'abc',
test:[{
title:'test‘,
desc:'description'
}]
}
let {title:esTitle,test:[{ title:cnTitle}]} = metaData;
esTitle = 'abc' cnTitle = 'test'
}
字符串结构赋值:左边是数组,右边是字符串。
布尔值结构赋值:对象结构赋值的一种
数值结构赋值:对象结构赋值的一种
函数参数结构赋值:数组结构赋值在函数参数的一种应用。