博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
var let const 区别
阅读量:4070 次
发布时间:2019-05-25

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

var let const 区别

注:let和const是ES6提出的。

Ⅰ、是否存在变量提升?

​console.log(a); // undefined  ===>  a已声明还没赋值,默认得到undefined值var a = 100;console.log(b); // 报错:b is not defined  ===> 找不到b这个变量let b = 10;console.log(c); // 报错:c is not defined  ===> 找不到c这个变量const c = 10;

Ⅱ、是否存在暂时性死区

let和const存在暂时性死区。即只要块级作用域内存在let命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响。( let 命令声明变量之前,该变量都是不可用的。
这在语法上,称为 “暂时性死区”。形成封闭的作用域)。
总之,暂时性死区的本质就是,只要一进入当前作用域,所要使用的变量就已经存在了,但是不可获取,只有等到声明变量的那一行代码出现,才可以获取和使用该变量。

var tmp = 123;if (true) {  tmp = 'abc'; // ReferenceError  let tmp;}//以上代码if后面{}形成了块级作用域,由于使用let声明了tmp,则这个变量就绑定了块区域,在声明之前使用,会报错。​

Ⅲ、是否允许重复声明变量?

var允许重复声明变量。
let和const在同一作用域不允许重复声明变量。

var f = 4;var f = 5;console.log(5) //5let g = 6;let g = 7;console.log(7) //SyntaxError: Identifier 'g' has already been declaredconst h = 8;const h = 9;console.log(h) //SyntaxError: Identifier 'g' has already been declared

Ⅳ、是否存在块级作用域?

var不存在块级作用域。
let和const存在块级作用域。

 

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

你可能感兴趣的文章
mysql 主从同步配置
查看>>
为什么很多程序员都选择跳槽?
查看>>
mongdb介绍
查看>>
mongdb在java中的应用
查看>>
区块链技术让Yotta企业云盘为行政事业服务助力
查看>>
Yotta企业云盘更好的为媒体广告业服务
查看>>
Yotta企业云盘助力科技行业创高峰
查看>>
Yotta企业云盘更好地为教育行业服务
查看>>
Yotta企业云盘怎么帮助到能源化工行业
查看>>
企业云盘如何助力商业新发展
查看>>
医疗行业运用企业云盘可以带来什么样的提升
查看>>
能源化工要怎么管控核心数据
查看>>
媒体广告业如何运用云盘提升效率
查看>>
企业如何运用企业云盘进行数字化转型-实现新发展
查看>>
司法如何运用电子智能化加快现代化建设
查看>>
iSecret 1.1 正在审核中
查看>>
IOS开发的开源库
查看>>
IOS开发的开源库
查看>>
Jenkins - sonarqube 代码审查
查看>>
Jenkins + Docker + SpringCloud 微服务持续集成(一)
查看>>