Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么不允许在JavaScript中重新声明let和const关键字变量,而允许使用var关键字变量?_Javascript_Node.js_Global Variables - Fatal编程技术网

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

为什么不允许在JavaScript中重新声明let和const关键字变量,而允许使用var关键字变量?,javascript,node.js,global-variables,Javascript,Node.js,Global Variables,我知道变量重新声明会导致语法错误,这是非法的,但JavaScript有自己关于重新声明的奇怪概念。拜托,我需要关于这件事的指导 1) 当我们在JavaScript中使用var变量时,我试图理解这一点,它可以被重新声明。 2) 。最后分配的值将更新为var标识符。 3) .我查阅了一些资料,发现v8engine并没有重新声明var,它只是将最新的值分配给同一个var标识符,,知道这是完美的。 4) 如果是这样的话,为什么JavaScript中的let和const关键字s不具有相同的重新声明灵活性。

我知道变量重新声明会导致语法错误,这是非法的,但JavaScript有自己关于重新声明的奇怪概念。拜托,我需要关于这件事的指导

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

在同一范围内重新声明相同名称的变量的能力会让阅读脚本的人感到困惑。如果在代码中的某一行声明变量,然后再次声明,很可能是输入错误或意外,因为这没有意义-如果要重新分配变量,只需重新分配变量而不重新声明

函数getName(name){
//剧本作者想在这里做什么?
//他们忘了已经有一个叫name的论点了吗?
var name=prompt('你叫什么名字?');
console.log('hi',名称);
}

getName()灵活性被认为是没有用的。重新声明
var
变量充其量是草率的,最糟糕的是一个bug
let
const
旨在通过防止重新声明来防止这种草率或意外错误。此外,根据定义,
const
const
。它不能得到一个新的赋值,所以对
const
的重新声明永远不会是一个选项。非常感谢,我得到了一个观点,从let和const中他们把它变得严格了,对吗?是的,当代码稍微严格一点时,通常会更容易。虽然在这种情况下,它的“更严格”和“更不草率”更少。一些语言允许重新声明常量,只要所有声明都具有相同的值:-)