首页 > 作文

javascript的var与let,const之间的区别详解

更新时间:2023-04-04 09:11:11 阅读: 评论:0

说到javascript中声明变量的几种方法也就是varletconst了,letconstes6中新增的命令。那么它们之间有什么区别呢?

我们先整体说一下三者的区别,在详细介绍,var、let、const的区别主要从以下几点分析:

作为全局变量时的不同变量提升暂时性死区块级作用域重复声明修改声明的变量

作为全局变量时

es5中,顶层对象的属性和全局变量是等价的,用var声明的变量既是全局变量,也是顶层变量的属性

但是es6中用let声明的变量可以在全局访问到,但是并没有在顶层变量的属性上,const声明的常量同样也不会在顶层变量上

变量提升

var声明的变量存在变量提升,及变量可以在声明之前调用,值为undefined

letconst不存在变量提升,即它们所声明的变量一定要在声明后使用,否则会报错

console.log(a)  // undefinedvar a = 1console.log(b)  // cannot access 'b' before initializationlet b = 2console.log(c)  // cannot access 'c' before initializationconst c = 3console.log(a)  // undefinedvar a = 1console.log(b)  // cannot access 'b' 无意识记忆before initializationlet b = 2console.log(c) 小学生简单手工制作 // cannot access 'c' before initializationconst c = 3

暂时性死区

var不存在暂时性死区

letconst存在暂时性死区,只有等到声明变量的那一行代码被执行后,才可以获取和使用该变量

其实这一点就是有上一点变量提升延伸而来的区别。因为var声明的变量存在变量提升,在声明之前使用该变量值为undefined,不会报错,所有没有暂时性死区。letconst在该作用域开始前后,变量或常量声明之前使用会报错,这一块区域也就被称为暂时性死区

例同上文:

console.log(a)  // undefinedvar a = 1console.log(b)  // cannot access 'b' before initializationlet b = 2console.log(c)  // cannot access 'c' before initializationconst c = 3

块级作用域

var打高尔夫球不存在块级作用域

letconst存在块级作用域

{    var a = 2}console.log(小事情大道理a)  // 2{    let b = 2}console.log(b)  // uncaught referenceerror: b is not defined{    const c = 2}console.log(c)  // uncaught referenceerror: c is not defined

重复声明

var在相同作用域下允许重复声明,后面声明的变量会覆盖前面的变量声明

letconst在相同作用域下不允许重复声明

var a = 10var a = 20 // 20let b = 10let b = 20 // identifier 'b' has already been declaredconst c = 10const c = 20 // identifier 'c' has already been declared

修改声明的变量(常量与变量声明)

varlet声明的是变量,声明后的变量可被修改

const声明得失常量,只读。一旦声明,常量的值就不能改变。但是需要注意的是,对于引用数据类型,javascript中的变量或者常量存储的是该数据的存储地址,只空间名称怎么弄长要不直接修改该常量的引用,修改其指向的对象的属性是可以的。

var a = 10a = 20console.log(a)  // 20let b = 10b = 20console.log(b)  // 20const c = 10c = 20 // uncaught typeerror: assignment to constant variable

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注www.887551.com的更多内容!

本文发布于:2023-04-04 09:11:09,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/0f5e3b45852fc44b241552850fbb8b51.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:javascript的var与let,const之间的区别详解.doc

本文 PDF 下载地址:javascript的var与let,const之间的区别详解.pdf

标签:变量   声明   常量   死区
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图