为何Chrome控制台允许重复声明const变量,其他环境却报错?
Chrome控制台允许重复声明
const的原因解析 核心差异来自环境类型:Chrome控制台是交互式REPL环境,和常规脚本执行环境的处理逻辑不同。
- 常规环境(Firefox控制台、VS Code Live Server)严格遵循ES6规范:
const是块级作用域的绑定,同一作用域内重复声明同一标识符会直接触发语法错误。 - Chrome控制台为了提升交互体验,对每次输入的代码做了独立块作用域包裹。比如连续两次输入
const a = 1;,Chrome实际执行的是:
两个{ const a = 1; } { const a = 1; }const处于不同块作用域,因此不会触发重复声明错误。
- 常规环境(Firefox控制台、VS Code Live Server)严格遵循ES6规范:
验证Chrome并未违反规范:在Chrome控制台中输入同一作用域内的重复声明代码,依然会报错:
{ const a = 1; const a = 2; // 此处会抛出语法错误 }其他环境报错的原因:
- Firefox控制台没有做独立块的优化,每次输入的代码默认处于同一作用域,重复声明自然报错。
- VS Code Live Server运行的是完整脚本文件,所有代码处于明确的作用域中,严格遵循ES6规范,因此重复
const声明会触发错误。
内容的提问来源于stack exchange,提问作者Azhar Choudhury
相关产品推荐
相关产品推荐

