当前位置:主页 > 查看内容

ES6学习笔记一:let、const与作用域

发布时间:2021-04-29 00:00| 位朋友查看

简介:ES6学习笔记一let、const与作用域 前言 一、ES6新增块关键字let、const 二、let关键字 2.1.基本方法 2.2.不存在变量提升 2.3.暂时性死区 三、const关键字 3.1.基本方法 总结 前言 此系列文章用于记录小萌新的ES6的学习经历如有什么错误或者不好的地方请各位……

前言

此系列文章用于记录小萌新的ES6的学习经历如有什么错误或者不好的地方请各位大佬多多指教


一、ES6新增块关键字let、const

在ES5中只有var关键字来定义变量,ES6新增了两个关键字let和count对变量进行声明,
并且在ES5中作用域方面不支持块级作用域。而ES6添加这两个关键字就是为了划分块级作用域


二、let关键字

2.1.基本方法

ES6 新增了 let 命令,用于声明变量。其用法类似于 var ,但是所声明的变量只在 let命令所在的代码块内有效。

代码如下(示例):

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

上面的代码在let声明的块作用域外进行使用会报错, 而var返回了正确的值,所以let只能在所定义的块作用域里面进行使用

注意:
代码如下(示例):

{
    var b = 5;
    var b = 1;
    console.log(b); // 1
}
{
    let a = 10;
    let a = 1;
    console.log(a); // SyntaxError: Identifier 'a' has already been declared
}

上面的代码var声明的变量可以重新定义覆盖,而let不能重新定义相同名字的变量。

2.2.不存在变量提升

在js中var定义变量时,会出现变量提升的现象即在定义变量之前进行使用会显示var为undefined并不会报错。而let所定义的变量则没有变量提升的问题。

代码如下(示例):

console.log(b); // undefined
var b = 1; 

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

2.3.暂时性死区

S6明确规定,如果区块中存在let和const命令,则这个区块对这些命令声明的变量从一开始就形成封闭作用域。
在代码块内,使用let命令声明变量之前,该变量都是不可用的,这个区域被称为“暂时性死区”。

{
    var temp = 123;
    if (true) {
        console.log(temp); //ReferenceError: Cannot access 'temp' before initialization
        let temp;
    }
}

三、const关键字

3.1.基本方法

声明一个只读的常量,一旦声明,其值不能改变且必须立即初始化。
除此之外,与let用法一致。

在下面这种情况当常量保存的不是一个值,而是一个地址的时候,该常量所引用的对象是可以更改成员的,只是不能更改该常量保存的地址。

{
const foo={y:10};
foo.x=100;
console.log(foo.x);
foo={n:1000};
}

总结

例如:以上就是今天要讲的内容,本文仅仅简单介绍了ES6的let和const关键字的使用。
;原文链接:https://blog.csdn.net/weixin_44258327/article/details/115448973
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文


随机推荐