《ES6标准入门》(一)let和const

喜欢ヅ旅行 2022-04-03 03:22 298阅读 0赞

一、let命令

1)let的作用域只在代码块内,块外无效;var全局有效

var a = [];
for(var i = 0;i < 10;i++){
a[i] = function(){
console.log(i);
};
}
a[6]();
对于这段代码,变量i是var声明的,在全局范围内有效,所以每一次循环,新的i值都会覆盖旧值,导致最后输出的是最后一轮的i值

如果使用let,声明的变量仅在块级作用域内有效,即只在本轮有效,所以每一次的循环其实都是一个新的变量,最后将输出6

2)let不像var会有变量提升,所以变量一定要在声明后使用,否则报错

3)暂时性死区:

只要块级作用域内存在let命令,它所声明的变量就“绑定”这个区域,不在受外部的影响。

var tmp = 123;
if(true){
tmp = ‘abc’; //referenceError
let tmp;
}
这段代码中存在全局变量tmp,但是块级作用域内let又声明了一个局部变量tmp,导致后者绑定这个块级作用域,所以在let声明变量前,对tmp赋值会报错。

ES6明确规定,如果区块中存在let和const命令,则这个区块对这些命令声明的变量从一开始就形成封闭作用域。只要在声明之前就使用这些变量,就会报错。(暂时性死区)

暂时性死区的本质就是:只要一进入当前作用域,所要使用的变量就已经存在,但是不可以获取,只有等到声明变量的哪一行代码出现,才可以获取和使用该变量。

4)不允许重复声明,否则报错

5)ES6允许块级作用域任意嵌套

内层作用域可以定义外层作用域的同名变量

块级作用域外部无法调用块级作用域内部定义的函数

二、const

const用来声明常量,一旦声明,其值就不可以更改

const一旦声明常量,就必须立即初始化

const的作用域和let命令相同:只在声明所在的块级作用域内有效

const命令声明的常量也不提升,同样存在暂时性死区,只能在声明后使用

ES5只有两种声明变量的方法:var命令和function命令

ES6除了添加let和const之外,还添加了import和class命令,共有6中声明变量的方法
-——————————
作者:一只努力的程序媛
来源:CSDN
原文:https://blog.csdn.net/weixin\_37719279/article/details/80928093
版权声明:本文为博主原创文章,转载请附上博文链接!

发表评论

表情:
评论列表 (有 0 条评论,298人围观)

还没有评论,来说两句吧...

相关阅读

    相关 es6let const

    Let和const 一、Let 1.let用来声明变量,并且会在当前作用域形成代码块;let声明的变量可以改变,(值和类型都可以改变)。 { le

    相关 ES6基础:letconst

    ES6基础之let和const > 变量声明是我们在学习一门语言时,最先了解的部分之一。不要忽略它,我们一起来看看ES6中新增的两种变量声明命令吧~ 在开始ES6系列之

    相关 es6 let const 命令

    一.let 1.作用域 在javascript中只有全局作用域和函数作用域,并不存在块级作用域。这样,在使用时就会出现一些问题。 下面我们先来举例说明let块级作用