概述
为了更好的了解var let const 的区别,我们就来简单的了解它们的过程
相信有很多人都会面临面试官问的这个问题
很多的同学都是简单的认为 var声明的变量会提升,而let const 不会,虽然可以这样认为,但不完全对,
经过几经波折,得出一个自己看得懂的结论
这次,我们就来看看它们三者的区别以及过程让我们可以更好的了解它们
在JS引擎解析代码的时候,遇到变量经历不同的声明方式的过程是不同的
1.通过var声明的变量过程
consloe
过程如下:
1.var声明的变量会提升到最顶部,创建出a变量
2.创建完a变量后会初始化为undefined
3.开始执行代码
4.将变量值赋值给a变量
为什么在var声明变量之前输出这个变量为undefined的原因就一目了然了
2.通过let声明变量的过程
let
1.输出结果:无法在初始化之前访问 ' a ' 。
2.输出结果:标识符“a”已经声明
经过错误1.的提示,那么问题来了,let是会提升吗?
过程如下:
1.let声明的变量在创建过程中被提升
2.开始执行代码,但未初始化 Temporary dead zone(也就是所谓的暂时性死区)
3.初始化代码
4.在修改变量值的前提下,进行赋值
这就是为什么输出的结果为:无法在初始化之前访问 ' a '
错误2.使用let声明变量无法声明重复变量,所以抛出错误
有些同学看到暂时性死区会很懵逼的说,那是啥玩意儿?如然后各种度娘,其实你可以简单的认为:在变量初始化之前,是无法使用这个变量的
3.通过const声明的常量
const
输出的结果为:重新赋值了常量。也就是是你重新修改了const声明的常量的值
const 和 let只有一个区别,那就是 const 声明常量的过程只有两步:
创建和初始化,但没有赋值过程
因为没有赋值过程,所以无法给const声明的常量进行重新赋值,这就是为什么重新给常量赋值后会抛出错误的原因
const声明的常量是什么?常量,顾名思义就是常用的变量,在判断逻辑的情况下,我们有时候需要一个固定值来作为判断条件,那么我们就会优先使用const进行声明常量,而const声明的常量移除了这个量的修改功能,也就是说 const声明的量只无法修改其值,故称为常量。
4.const 和 let 具有块级作用域
{
由此可见,const 和 let 声明的常量/变量只限于当前作用域,在外部作用域是无法访问到的,那么另一个问题就来了,它们两者声明的常量/变量是否属于window呢?
let
是否看完结果后,又发现了一项它们之间的区别,在全局作用域中使用var或者不使用var声明的变量都是属于window的,而let和const不是
最后
以上就是飘逸酸奶为你收集整理的const 常量_var,let,const 的区别?的全部内容,希望文章能够帮你解决const 常量_var,let,const 的区别?所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复