Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.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 在循环变量中重用具有给定名称的变量?_Javascript_For Loop_Scope_Var - Fatal编程技术网

Javascript 在循环变量中重用具有给定名称的变量?

Javascript 在循环变量中重用具有给定名称的变量?,javascript,for-loop,scope,var,Javascript,For Loop,Scope,Var,我知道JavaScript没有比“全局”或“每个函数”更细粒度的作用域。但是写这样的东西真的有问题吗 function test() { for (var i = 10; i < 20; i++) { /* ... */ } for (var i = 03; i < 04; i++) { /* ... */ } } 然后,如果您的使用远离声明,您可能会忘记删除未使用的变量。或者,您可能会意外地写入全局范围,因为您认为您已经声明了一些您没有声明的内容 把var放在任何

我知道JavaScript没有比“全局”或“每个函数”更细粒度的作用域。但是写这样的东西真的有问题吗

function test() {
    for (var i = 10; i < 20; i++) { /* ... */ }
    for (var i = 03; i < 04; i++) { /* ... */ }
}
然后,如果您的使用远离声明,您可能会忘记删除未使用的变量。或者,您可能会意外地写入全局范围,因为您认为您已经声明了一些您没有声明的内容


把var放在任何你想成为本地人的东西上似乎是一种较小的罪恶。它是?根据多次将其重新定义为var没有效果,但这种情况比循环变量更人为。有没有真正好的理由不做上述第一种情况的事情?

正如我在上面的评论中所说,
在中没有真正的风险碰到未声明的
var
,但我认为这只是口味问题,我习惯于在顶部声明所有内容,并设置
“严格模式”

然而,我同意这并不能解决重置变量的问题。 我通常会有很多详细的变量名,但选择权在你,只要不损害调试过程,就只做更适合你的事情

另外,我想强调一个事实,
“严格模式”
应该始终处于启用状态,这将对调试有很大帮助


编辑:如果你不熟悉
“严格模式”
,你可以有一个详细的解释

这只是一个风格问题-我个人更喜欢保持“变量接近”(并使用不同的变量名称),但不同的linter和静态分析工具有自己的偏见。尽管如此,我不会在数字前面加0,除非我想要八进制;-)(
var
是一个范围广泛的声明,而不是一个“已执行的语句”;由于“提升”了
var
在同一个函数/程序范围内的位置,对程序的正确性没有影响。)@user2864740我最困难的部分是不断为“索引”想出一堆名称。我可能会坚持我目前的策略(你的),或者让我自己去抓住那些将声明放在首位所产生的问题。我不知道。叹息,你伤害了我。。。(注意:在本例中,我确实需要octal.:-)我不太按索引循环。。我很少在同一个函数或同一个源中使用它。我喜欢编写更小的函数,并尽可能使用函数式迭代器。此外,还有
j
k
;-)在
strict mode
中,没有真正的风险碰到未声明的
var
,但我认为这只是口味的问题,我习惯于在上面声明所有内容,而设置
strict mode
strict mode对我来说是新的,谢谢。我时不时地修补JavaScript,因为……嗯,为了在浏览器中运行代码,我必须这么做。我个人很期待有一个JS后端,我再也不用直接用JavaScript编程了(!):-/但在此之前,谢谢你提供的信息,我现在会把它放在我所有的文件上。
function test() {
    var i;
    for (i = 10; i < 20; i++) { /* ... */ }
    for (i = 03; i < 04; i++) { /* ... */ }
}