关于javascript:我是否需要在for循环中创建变量?

Do I need to create a variable in a for-loop?

本问题已经有最佳答案,请猛点这里访问。

我是JavaScript的新手,所以如果这个问题太愚蠢我很抱歉。 有人告诉我,当你创建一个for -loop时,你应该写:

1
for (var i = 0; i < 10; i++)

但有时我忘记在i之前放var

1
for (i = 0; i < 10; i++)

它的工作方式相同。 我需要创建变量i吗?

两者之间的主要区别是什么

1
var i = 0

1
i = 0

for -loop?


不使用var创建变量仍会创建变量。不同之处在于它属于全局命名空间。应该避免这种情况,因为它增加了与其他函数具有相同名称的变量发生冲突的可能性。


当您使用var声明变量时,它的范围将受到限制,

如果不使用var,则变量将在全局范围内。这意味着您可以从任何地方访问此变量。


在没有var的情况下声明的变量是可从任何地方访问的全局变量。使用全局变量被视为反模式,应该避免使用。

关于你的循环,这不是必要的,但不好的做法


基本上,您的代码是有效的,因为您正在创建一个全局变量。最佳做法是使用循环内部的var显式创建变量。这就是我所说的垃圾变量。它永远不会离开循环的范围,因此您可以继续为所有循环使用相同的变量名称(除非您正在嵌套)。


区别在于您的浏览器需要知道是否要声明值为'0'的变量'i',或者您想要将'0'分配给已存在的变量'i'。
浏览器(或大多数)将知道是否已存在具有此类名称的变量,因为它可以只查找其变量库。但是对于我们这些人来说,将'var'放在它前面是非常有用的,所以我们知道这是声明。

在其他语言中,'var'或任何数据类型定义(如'int','char'或'bool')是必需的,但至少在Javascript中,它只是根据顺序和易于阅读代码编写的。

1
2
3
4
5
6
7
8
function someCode('awesome', 'hyper-fast'){
...
...
i = 0; // if this is a declaration, write 'var', so we know !
...
...
return 'backHome';
}

您可以像while循环一样使用for循环。

1
2
3
4
5
6
7
8
9
10
var i=0;
for(;;)
{
   // something need to perform
   i++;

   // breaks your loop here
   if(i > 10)
      break;
}


你可以在循环之前定义变量,就像这样

1
2
var i = 0;
for(i;i<10;i++)

这将是有效的。所以你可以在你循环之前定义变量。循环中的变量是相同的,就像它之前一样。