JS中const有没有变量提升

[复制链接]
发表于 2025-12-8 10:00:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
在JavaScript中,const 关键字用于声明一个只读的常量,其值在初始化后不能被重新赋值。关于变量提升(Hoisting),它是JavaScript中一个紧张的概念,指的是无论变量或函数声明在那边,它们都会被“提升”到其地点作用域的最顶部。但是,这个规则不完全实用于const和let声明的变量。
变量提升(Hoisting)的传统明确
在ES6之前,JavaScript只有var关键字用于声明变量。var声明的变量确实会被提升,这意味着变量可以在声明之前被访问(只管此时它的值是undefined)。
  1. console.log(x); // 输出:undefined  
  2. var x = 5;
复制代码
let 和 const 的举动
ES6引入了let和const作为新的变量声明方式,它们的计划初志之一就是为了办理var带来的作用域和变量提升方面的题目。与var差别,let和const声明的变量不会被提升到其作用域的顶部,而且它们遵照所谓的“临时性死区”(Temporal Dead Zone, TDZ)规则。
在“临时性死区”内,任何对let或const变量的访问都会抛出一个ReferenceError错误,直到变量被现实声明为止。
  1. console.log(y); // 抛出 ReferenceError: y is not defined  
  2. let y = 10;  
  3.   
  4. console.log(z); // 抛出 ReferenceError: z is not defined  
  5. const z = 20;
复制代码
结论

因此,const(以及let)声明的变量没有变量提升。这意味着你必须在声明它们之后才华访问它们,否则会导致ReferenceError错误。这一举动使得let和const在声明局部变量时更加安全和可推测。
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表