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

标签 javascript variables for-loop

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

  1. 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);
    }
    
  2. for 循环:输出变量位于循环之外,给出不同的结果。

    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);
    }
    

最佳答案

在这两种情况下,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);
  }
  // ...
}

显然,在每次迭代开始时将变量设置回 "" 会破坏整个循环。

关于javascript - 将结果变量保留在 for 循环(Javascript)之外有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39881524/

相关文章:

javascript - 使用 Django 从 jQuery 调用函数无法正常工作

c++ - 如何在函数内部声明全局变量?

javascript - d3 多行更新路径和过渡路径不适用于嵌套数据

javascript - Chrome 扩展 - 从 list v2 迁移到 v3

javascript - 如何将动态范围变量添加到angularjs中的for循环?

java - 查找数组中的重复项并仅打印一次

image - 如何在命令提示符中创建 'for' 循环?

Python - 从文件中读取第二列

javascript - 如何在不刷新窗口的情况下捕获输入类型 'text' 的值更改事件?

java - 为什么 ActionListener 可以访问类的私有(private)变量?