【问题标题】:Why do we use `i` as the variable to control a Javascript loop? [duplicate]为什么我们使用 `i` 作为变量来控制 Javascript 循环? [复制]
【发布时间】:2019-10-09 13:43:01
【问题描述】:

我一直想知道为什么我们在 Javascript 循环中使用 i 不能是任何字母吗?只是想知道为什么i 似乎是默认的。

for (i = 0; i < 5; i++) {
  text += "The number is " + i + "<br>";
}

【问题讨论】:

标签: javascript html loops for-loop variables


【解决方案1】:

循环中常用的变量名有几种:

i 可能是最常见的,因为它只有一个字母,代表index

您的代码示例应该像这样定义 i

for (let i = 0; i < 5; i++) {
  text += "The number is " + i + "<br>";
}

否则它是在全局范围内创建的,这不应该发生。

【讨论】:

【解决方案2】:

这是来自 Fortran 的历史文物,which originally made all variables beginning with i, j, ... n implicitly integer (a convention common to mathematical notation as well, at least for i, j and k), and all other names (a-h, o-z) implicitly real。很多代码最终借用了该约定用于一次性整数变量名称,使用 i 用于外部循环,j 用于下一个循环,等等。

没有真正的押韵或理由(除了i 经常被用来表示“索引”或“整数”),只是一个常见的约定。约定允许使用i(因为我们都知道你的意思);如果您不使用它,您可能想要一个拼写出来的名称,而不是其他无法描述变量所代表内容的随机单字母名称。

【讨论】:

  • 感谢起源故事!由于内存小,我总是假设变量名很短。
  • @Intervalia:我的意思是,这就是 Fortran 这样做的部分原因。他们最初将名称限制为六个字符,并根据第一个字母隐式键入。请记住,Fortran 最初是在穿孔卡片上编写的,这是固定宽度字段的终极版。甚至稍后,早期编译主机上的内存以千字节为单位(除了 byte 不是标准的!),因此您必须做出一些妥协以减少源代码大小,减少符号表开销等. IBM 1401 FORTRAN 的编译器ran in core memory of 8000 six bit characters.
  • 当我在英特尔工作时,我们经常被告知:“代码很完美,现在将大小减少 1K,不要丢失任何功能。”那时我做了很多组装开发,但从来没有在大型机上开发过。
【解决方案3】:

这不是任何原因 - 它只是一个命名约定,表示索引(字母 i)或循环计数器(迭代)。你可以使用任何你喜欢的变量名:

let text = "";
for (anExtremelyLongCounterName = 0; anExtremelyLongCounterName < 5; anExtremelyLongCounterName++) {
  text += "The number is " + anExtremelyLongCounterName + "<br>";
}
document.write(text);

另请注意,目前您的代码正在隐式声明一个全局变量。使用letvar 让它变得更好。

【讨论】:

    【解决方案4】:

    您可以为此使用任何字母或任何有效的变量名。当我第一次学习编程时,我的老师指示我们使用lcv 循环控制变量。

    但是,要回答您最初的问题,i 在大多数具有类似 for 循环构造的语言中经常用于控制循环迭代,我相信它源自单词 increment 的第一个字母。然后按照惯例,如果你有嵌套循环,下一个循环控制变量将是字母表中i 之后的字母:j,然后是k,等等。

    不过,正如我之前提到的,它可以是您选择的任何变量名称。但是谁愿意为一次性变量做这么多输入呢?

    【讨论】:

      猜你喜欢
      • 2015-05-02
      • 2012-02-14
      • 1970-01-01
      • 2013-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-11
      相关资源
      最近更新 更多