博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ES6 let和const命令
阅读量:3962 次
发布时间:2019-05-24

本文共 1418 字,大约阅读时间需要 4 分钟。

let和const

let命令

基本用法

用来声明变量。它的用法类似于var,但是let声明的变量,只在let命令所在的代码块内有效。

{
var bb = 1; let aa = 10;}console.log(bb); //1console.log(aa);//Uncaught ReferenceError: aa is not defined

结果如图:

在这里插入图片描述

不存在变量提升

let不会像var那样会有“变量提升”的现象。当let声明的变量一定要在声明后使用,否则会报错。

console.log(s1); // 输出undefinedconsole.log(s2); // 报错Cannot access 's2' before initializationvar s1 = 2;let s2 = 2;

结果如图:

在这里插入图片描述
上面代码中,var声明的s1被提前,所以输出时是undefined,但let声明的变量不存在提前,因此会报错。

暂时性死区

if (true) {
test = 'abc'; //Uncaught ReferenceError: Cannot access 'test' before initialization let test;}

结果:

![在这里插入图片描述](https://img-blog.csdnimg.cn/20210606101657553.png在这里插入图片描述

使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”(temporal dead zone,简称TDZ)。

不允许重复声明

let不允许在相同作用域内,重复声明同一个变量。

// 报错function () {
let a = 10; var a = 1;}

结果:

在这里插入图片描述

function niu() {
let a = 10; let a = 1;}

结果:

在这里插入图片描述

const命令

const声明一个只读的常量。

const声明一个只读的常量。一旦声明,常量的值就不能改变。

const cl = "常量"cl = "我要改变"

如图:

在这里插入图片描述

声明就赋值

const一旦声明变量,就必须立即赋值,不能之后赋值。

const test;//Uncaught SyntaxError: Missing initializer in const declaration

如图:

在这里插入图片描述

声明不会提升

const命令声明的常量也是不会有声明提升的,同样也存在暂时性死区,只能在声明的位置后面使用。

if (true) {
console.log(MAX); // ReferenceError const MAX = 5;}

如图:

在这里插入图片描述

不允许声明重复

const声明的常量,也与let一样不可重复声明。

if (true) {
const message = "Goodbye!"; const message = 30; }

如图:

在这里插入图片描述

!!!对于引用类型数据,const只是保证引用类型的地址不变,但并不是保证引用类型的属性和方法不可改变

const test = {
};test.prop = 123;test.prop// 123test = {
}; // Uncaught TypeError

如图:

在这里插入图片描述

转载地址:http://vwezi.baihongyu.com/

你可能感兴趣的文章
图文混排效果
查看>>
urllib2.urlopen超时问题
查看>>
魏兴国:深入浅出DDoS攻击防御
查看>>
使连续的参考文献能够中间用破折号连起来
查看>>
Discover Feature Engineering, How to Engineer Features and How to Get Good at It
查看>>
36辆车,6条跑道,无计时器,最少几次比赛可以选出前三
查看>>
matlab2012b与matlab7.1执行set(gca,'Yscale','log')之后画到的直方图结果居然不同
查看>>
回文题
查看>>
AJAX应用之注册用户即时检测
查看>>
File 类小结
查看>>
java除去字符串空格
查看>>
jsp 2.0标记文件
查看>>
Hibernate中Criteria的完整用法
查看>>
sql jsp
查看>>
spring beans beanfactory applicationcontext
查看>>
使用ORM工具进行数据访问
查看>>
使用ORM工具进行数据访问
查看>>
编译与部署Eclipse+Tomcat+MySQL+Liferay4.1.2
查看>>
POJ3728,The merchant(倍增LCA+分治)
查看>>
2019 ICPC Malaysia National,E. Optimal Slots(01背包变形)
查看>>