从0学习前端第二天(是ES6的let和get分享)

二.es6

1.let与get用法

let是es6新增的变量,let与var俩者之间的差别在于如下

(1)let声明的变量只在let命令块中有效。而var声明的变量在全局有效

(2)下图的例子:结合for循环使用的话 由于var声明全局变量,也只有一个变量,所以每次循环 i的值都会改变。let声明的变量只在本轮循环有效,每次循环都是一个新的变量,所以最后的结果是6。另外也要讲下for循环的特别之处,设置循环变量的那部分是一个父作用域,而循环体内部是一个单独的子作用域。

在这里插入图片描述

(3) let不存在变量提升,var有变量提升 实例如下:

在这里插入图片描述

(4)暂时性死区

let暂时性死区的意思是 如果区块中存在let和const命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。实例如下:

在这里插入图片描述

暂时性死区意味着typeof不再是一个百分之百安全的操作

在这里插入图片描述

死区的经典案例

function bar(x=y,y=2){
   return[x,y]   //会报错,原因就是x=y的时候 y还没有定义
}
bar();
function bar1(y=2,x=y){return[x,y]   //不会报错,原因就是x=y的时候 y以及定义为2了
 }
 bar1();
let x=x  //会报错

var x=x //不会报错

(5)let不可以重复声明变量,var可以重复声明

在这里插入图片描述

思考案例

在这里插入图片描述

(6)let的块级作用域

​ 在es6还没有出来之前 作用域包括了全局作用域和函数作用域,没有块级作用域,也带来了很多不合理的场景。

​ 第一.内层变量可能会覆盖外层变量。如下案例

在这里插入图片描述
​ 第二.用来计数的循环变量泄漏为全局变量

在这里插入图片描述

(7)es6块状作用域的特点

如下图,函数有俩个代码块,外层代码不受内存代码块的影响,所以输出5,如果俩个变量都用var定义,输出为10。

在这里插入图片描述
后面意识到正值春招之时,所以晚点也会带来前端笔试题和面试题的分享。也是对于我自我的一种提升。有兴趣可以关注我的博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值