欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > let、const【ES6】

let、const【ES6】

2025/3/1 9:34:06 来源:https://blog.csdn.net/qq_53002037/article/details/145897267  浏览:    关键词:let、const【ES6】

‌“我唯一知道的就是我一无所知。” - 苏格拉底

目录

  • 块级作用域:
  • var、let、const的对比:
  • Object.freeze():

块级作用域:

块级作用域指由 {} 包围的代码块(如 if、for、while、单独代码块等)形成的独立作用域,‌ES6‌ 的 let 和 const 声明的变量仅在当前块内有效。在代码块内部声明的变量只能在该代码块内访问。

var、let、const的对比:

特性varletconst
作用域函数作用域(在函数内部使用var声明)/
全局作用域(在函数外/没有被任何函数包围)
块级作用域块级作用域
重复声明允许在同一个作用域多次声明一个变量不能(会报错)不能(会报错)
变量提升存在(初始为undefined)不存在传统意义上的变量提升不存在传统意义上的变量提升
暂时性死区(TDZ)不存在存在‌存在
重新赋值必须初始化且一旦赋值后就不能改变其值 【1】
全局对象的属性【与顶层对象挂钩】声明的全局变量会成为window对象的属性在全局作用域声明的变量不会成为window的属性,即window.let声明的变量打印出来是undefined与let同理

解释【1】:但是const如果声明的是一个对象(数组)那么对象或数组的内容是可以被修改的。这意味着我们可以添加、删除或更改对象属性,或者向数组中添加、删除或修改元素。但是,我们不能将const变量重新指向一个新的对象或数组。const 保证对象的引用不便,而不是值不变。
举例:

const myobj = {name: 'ssy',age: 18}myobj.name = 'kitty'console.log(myobj);

打印结果:
在这里插入图片描述
如果我就是不想让它改变呢?
可以使用我们的 Object.freeze() Object.freeze()方法,它用于创建一个不可变的对象‌。

Object.freeze():

Object.freeze()方法会冻结一个对象,冻结之后不能向这个对象添加新的属性,不能修改其已有属性的值,也不能删除已有属性。该方法返回被冻结的对象本身‌。Object.freeze()冻结的是对象的值,而不是变量的引用
注意:对于嵌套对象,Object.freeze()只会冻结第一层属性,而不会递归冻结。

const myobj = Object.freeze({name: 'ssy',age: 18})myobj.name = 'kitty'console.log(myobj);

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词