首页 > 解决方案 > 为什么在 JavaScript 中不允许 let 和 const 关键字变量重新声明,而 var 关键字变量是允许的?

问题描述

我知道变量重新声明会导致我们出现语法错误并且它是非法的,但是 JavaScript 有它自己关于重新声明的奇怪概念。请我需要有关这些东西的指导。

1).当我们在 JavaScript 中使用 var 变量时,我试图理解这一点,它可以被重新声明。2).最后分配的值将更新为 var 标识符。3).我浏览了一些资源,我知道v8engine 没有重新声明 var 它只是将最新的值分配给相同的 var 标识符,可以知道这是完美的。4). 如果是这样,为什么在 JavaScript 中没有赋予 let 和 const 关键字同样的重新声明灵活性。5).这个复杂的东西背后发生了什么请解释一下

标签: javascriptnode.jsglobal-variables

解决方案


在同一范围内重新声明同名变量的能力会让阅读脚本并试图理解它的人感到困惑。如果你在代码的某一行声明了一个变量,然后又再次声明了它,这很可能是一个错字或意外,因为它没有意义——如果你想重新分配变量,只需重新分配变量而不重新-声明它。

function getName(name) {
  // What did the script-writer mean to do here?
  // Did they forget that there's an argument called name already?
  var name = prompt('What is your name?');
  console.log('hi', name);
}
getName();

在同一范围内重新声明在技术上是允许的var,但这只是因为事情从一开始就是这样;现在将其更改为非法会破坏向后兼容性,但未完成

let并且const故意设计为不可重新声明以避免这种混淆。可以说,不那么混乱的代码比灵活性更重要。当语言规则过于灵活时,编码会变得更加困难。(请参阅==示例...)

即使有可能,const特别是重新声明一个变量也没有任何意义,因为const根据定义, a 是不可重新分配的。


推荐阅读