ES6新增方法

在了解ES6新增方法之前要先知道代码块是什么

代码块就是一个大括号括起来的部分,比如:{  }、if(){   }、for(){   }

1、let命令

let可以先声明再赋值,但不能先声明再访问,不能声明相同的变量名

let a
a=10
console.log(a)  //10


console.log(b)
let b=9


let c=12
let c=19
console.log(c)

let只在代码块内有效

{
let a=10;
console.log(a)  //10
}
console.log(a)  //Uncaught ReferenceError: a is not defined

let与for循环计时器很适用

for(var i=0;i<10;i++){
setTimeout(function(){
console.log(i)   //0  1  2  3  4  5  6  7  8  9
},1000)
console.log(i)  //10个10
}


for(let j=0;j<10;j++){
setTimeout(function(){
console.log(j)  //0  1  2  3  4  5  6  7  8  9
},1000)
console.log(j)  //0  1  2  3  4  5  6  7  8  9
}
//这是由于let只在代码块内有效,因此每循环一次就会保留循环得到的数据

2、const命令

const 声明一个只读变量,声明之后不允许改变,意味着,一旦声明必须初始化,否则会报错,其他的与let类似

const a="hello";
console.log(a)  //hello

const b;
b=10;
console.log(b)  //Uncaught SyntaxError: Missing initializer in const declaration

暂时性死区

var i="world";
if(true){
console.log(i)  //Uncaught ReferenceError: Cannot access 'i' before initialization
const i=19;
}

ES6 明确规定,代码块内如果存在 let 或者 const,代码块会对这些命令声明的变量从块的开始就形成一个封闭作用域。代码块内,在声明变量 i之前使用它会报错。

3、解构赋值

解构赋值是对赋值运算符的扩展。是一种针对数组或者对象进行模式匹配,然后对其中的变量进行赋值的方法。在代码书写上简洁且易读,语义更加清晰明了;也方便了复杂对象中数据字段获取。

解构模型

解构的源,解构赋值表达式的右边部分。

解构的目标,解构赋值表达式的左边部分。

数组模型的解构:

//基本类型
let [a,b,c]=[1,2,3]
console.log(a,b,c)  ///1,2,3

//嵌套
let [a,[[b],c]]=[1,[[2],3]]
console.log(a,b,c)  //1,2,3

//可忽略
let [a,,b]=[1,2,3]
console.log(a,b)  //1,3

//不完全解构
let [a,b=1]=[]
console.log(a,b)  //undefined,1

//字符串
let [a,b,c]="hao"
console.log(a,b,c)  ///h,a,o

//解构默认值
let [a=10,b]=[undefined]
console.log(a,b)  //10,undefined

let [a=1,b=a]=[]
console.log(a,b)  //1,1

let [a=1,b]=[3]
console.log(a,b)  //3,undefined

let [a=1,b=a]=[4,5]
console.log(a,b)  //4,5
//当解构模式有匹配结果,且匹配结果是 undefined 时,会触发默认值作为返回结果。

对象模型的解构

//基本
let {name,age}={"aaa",19}
console.log(name,age)  //19,aaa

let {name:age}={name:19}
console.log(age,name)  //19 ''

//可嵌套可忽略
let obj={a:["aaa",{az:"bbb"}]}
let {a:[x,{az}]}=obj
console.log(x,az)  //aaa,bbb

let obj={a:["aaa","sss",{name:"Li"}]}
let {a:[x,,{name}]}=obj
console.log(x,name)  //aaa,Li

//不完全解构
let obj={a:["aaa",{age:18}]}
let {a:[x,{age},y]}=obj
console.log(x,y,age)  //aaa,undefined,18

//解构默认值
let {a=10,b=9}={a:19}
console.log(a,b)  //19,9

let {i:a="hello",p:b=10}={p:"world"}
console.log(a,b)  //hello,world

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值