繁体   English   中英

为什么在允许使用var关键字变量的JavaScript中不允许let和const关键字变量重新声明?

[英]Why let and const keyword variables are not allowed to redeclaration in JavaScript, where var keyword variable is allowed?

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

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

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

 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在同一个 scope 中重新声明在技术上是允许的,但这只是因为事情从一开始就是这样; 现在将其更改为非法会破坏向后兼容性, 但未完成

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM