ES6相关

目录

var

1.var存在变量提升

2.用var声明的变量,可以重新赋值

 3.var没有块级作用域

let

1.let声明的变量不能够再次声明

2.let没有变量提升

3.let不影响作用域链

const

1.const声明之后必须赋值,否则会报错

2.const定义的值不能被修改

解构赋值

对数组的解构赋值

对象的解构赋值

解构赋值相关操作

1.不引入其他变量来交换两个变量的值

2.数组去重


var

1.var存在变量提升

console.log(a)
var a = 1

执行上述代码,结果是undefined 

这是因为,用var去声明一个变量并赋值,不管在什么位置,都会先将变量的声明提到最前面,也就是所谓的变量提升,上述代码实际如下:

var a;
console.log(a)
a = 1

2.用var声明的变量,可以重新赋值

var name = '小明'
var name = '小红'
console.log(name)

可以看到,输出结果为“小红” 

 

 3.var没有块级作用域

function f(){
    for (var i=0;i<4;i++){
        //...
    }
    console.log(i)
}
f()

执行上述代码,输出结果为

 这是因为,var没有块级作用域,所以可以在for循环的外部访问到for循环定义的i

let

1.let声明的变量不能够再次声明

 如图所示,重复用let声明a,会报错,而用var则不会

 2.let没有变量提升

执行如下代码

console.log(a)
let a = 1

会报错

3.let不影响作用域链

{
    let a = 5
    {
        console.log(a)
    }
}

输出结果为5

const

1.const声明之后必须赋值,否则会报错

2.const定义的值不能被修改

执行如下代码

const A = 1;
A = 2;

 会报错

 

解构赋值

ES6允许按照一定模式,从数组或者对象中提取值,对变量进行赋值,称为解构,这种写法属于模式匹配,只要等号两边模式相同,变量就会被赋值

对数组的解构赋值

let [a,b,c] =[1,2,3]  //a=1,b=2,c=3
let [aa,[[bb],cc]] = [1,[[2]],3]  //aa=1,bb=2,cc=3
let [ , ,z] = [1,2,3]  //z=3
let [x,...y] = [1,2,3,4]  //x=1,y=[2,3,4]
let [aaa,bbb] = [1]  //aaa=1,bbb=undefined

//解构值允许设置默认值
let [aaaa= true] = []  //aaaa=true
let [aaaaa,bbbbb=1] = [11]  //aaaaa=11,bbbbb=1
let [xa,xb = 2] = [1,undefined]  //xa=1,xb=2
//ES6中使用严格的全等运算符,只有当一个变量严格等于undefined,才会被赋值为undefined

//默认值可以用解构赋值的其他变量,但该变量必须已经声明
let [xaa=1,yaa = x] = []  //xaa=1 yaa=1
let [xaaa=1,yaaa = x] = [2]  //xaaa=2 yaaa=2
let [k = m,m = 1] = []  //报错,因为m之前未被声明就拿去给k用

对象的解构赋值

let {a1,b1} = {a1:1,b1:1}  //a1=1,b1=1
let {ab} = {aa:11,bb:22} //ab=undefined,因为没有同名属性,解构失败
let {aaa:bbb} = {aaa:"aaa",bbb:"bbb"}  //bbb="aaa"
//对象的解构赋值机制是先找到同名变量,再赋值给对应变量,这里aaa的值是变量bbb,但是后面aaa的值变为"aaa",所以相当于将"aaa"赋值给了bbb

let obj1={
    o:[
        'hello',
        {j:'world'}
        ]
    }
let {o:[h,{j}]}  = obj1   //先找到同名的属性o,再给o里面的属性赋值,所以h="hello" j="world"

解构赋值相关操作

1.不引入其他变量来交换两个变量的值

let a = 1;
let b = 2;
[a,b] = [b,a]  //实现变量值交换
console.log(a)
console.log(b)

2.数组去重

let arr1 = [1,2,1,3,3,4]
let arr2 = [...new Set(arr1)]  //使用new Set()对数组元素进行去重
console.log(arr2)

输出结果如下 

欢迎指正

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值