【问题标题】:Do I need to create a variable in a for-loop? [duplicate]我需要在 for 循环中创建一个变量吗? [复制]
【发布时间】:2014-04-14 00:25:31
【问题描述】:

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

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

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

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

它的工作原理是一样的。我需要创建变量i吗?

两者的主要区别是什么

var i = 0

i = 0

for-循环中?

【问题讨论】:

  • 你测试的时候发生了什么?
  • 它的工作原理都是一样的......我要感谢所有及时回答的人! THX 伙计们!!!!!!!!!

标签: javascript variables for-loop


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      不同之处在于您的浏览器需要知道您是要声明一个值为“0”的变量“i”还是要将“0”分配给已经存在的变量“i”。
      浏览器(或大多数浏览器)将知道是否已经存在具有该名称的变量,因为它可以简单地查找其变量库。但是对于我们人类来说,将 'var' 放在它前面是非常有用的,所以我们知道这是声明。

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

      function someCode('awesome', 'hyper-fast'){
      ...
      ...
      i = 0; // if this is a declaration, write 'var', so we know !
      ...
      ...
      return 'backHome';
      }
      

      【讨论】:

        【解决方案4】:

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

        var i=0;
        for(;;)
        {
           // something need to perform
           i++;
        
           // breaks your loop here
           if(i > 10)
              break;
        }
        

        【讨论】:

          【解决方案5】:

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

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

          这会起作用。所以你可以在你之前定义变量 for cycle.var 在循环中是一样的,就像它之前一样。

          【讨论】:

            【解决方案6】:

            没有var 声明的变量是可以从任何地方访问的全局变量。使用全局变量被认为是一种反模式,应该避免。

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

            【讨论】:

              【解决方案7】:

              不使用var 创建变量仍会创建变量。不同的是它属于全局命名空间。应该避免这种情况,因为它会增加与来自其他函数的同名变量发生冲突的机会。

              【讨论】:

              • +1 说明避免使用!
              猜你喜欢
              • 2018-06-20
              • 1970-01-01
              • 2018-04-25
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2022-01-05
              • 2014-11-24
              • 1970-01-01
              相关资源
              最近更新 更多