Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/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
将结果变量保持在for循环(Javascript)之外有什么区别?_Javascript_Variables_For Loop - Fatal编程技术网

将结果变量保持在for循环(Javascript)之外有什么区别?

将结果变量保持在for循环(Javascript)之外有什么区别?,javascript,variables,for-loop,Javascript,Variables,For Loop,我试图理解这两种编写循环的方法之间的区别。两个代码段的结果是不同的。为什么? for循环:输出变量在循环内,给出不同的结果 for (var n = 1; n <= 100; n++) { var output = ""; if ( n % 3 == 0) output += "Fizz"; if (n % 5 == 0) output += "Buzz"; console.log(output || n); } var output = ""; for

我试图理解这两种编写循环的方法之间的区别。两个代码段的结果是不同的。为什么?

  • for循环:输出变量在循环内,给出不同的结果

    for (var n = 1; n <= 100; n++) {
      var output = "";
      if ( n % 3 == 0)
        output += "Fizz";
      if (n % 5 == 0)
        output += "Buzz";
      console.log(output || n);
    }
    
    var output = "";
    for (var n = 1; n <= 100; n++) {
      if ( n % 3 == 0)
        output += "Fizz";
      if (n % 5 == 0)
        output += "Buzz";
      console.log(output || n);
    }
    
    for(var n=1;n在这两种情况下,
    output
    的声明被视为在循环之外。然而,重要的是
    output
    的初始化:

      var output = "";
    
    将变量设置为空字符串(
    )。如果将初始化放在循环中,则在每次迭代开始时清除变量的值。这将清除上一次迭代尝试执行的所有工作

    因此,假设您的代码出现在某个函数中,第一个示例将被解释为:

    function whatever() {
      var output;
      // ...
      for (var n = 1; n <= 100; n++) {
        output = "";
        if ( n % 3 == 0)
          output += "Fizz";
        if (n % 5 == 0)
          output += "Buzz";
        console.log(output || n);
      }
      // ...
    }
    
    函数{
    var输出;
    // ...
    
    对于(var n=1;n1.如果您有不同的结果,您应该澄清它们。2.在第一种情况下,
    output
    在每次迭代时被重新初始化为空字符串。这实际上与范围无关,与初始化有关。变量声明(如
    var output
    )被提升到顶部。赋值(如
    output=“”
    不是。你真的想了解差异吗?然后(手动)展开循环,至少3-4次迭代。这应该会显示出差异。如果它在循环外部,它会做什么?@K.Kaur如果它在循环外部,初始化只会在循环开始之前进行一次。感谢你让它变得易懂!