【问题标题】:Why varible allto give 21?为什么要给21个变量?
【发布时间】:2018-03-12 21:26:04
【问题描述】:

我做了一个循环来收集数组中的数字 我输入了一个等于 0 的值 并给我 21 因为每次 0 都会添加到数组中的每个元素并收集它们并给我们 20 但如果我将值设为 1 它给了我 21,但它应该给我 24 因为我给数组中的每个元素都加了 1?还是我错了 为什么它给了我 21?

var num = [5,5,5,5];
var allto = 1;
var total = 0;

for(var i= 0; i<num.length; i++) {
  allto = allto +  num[i];
  total = total + num[i];
}
alert(allto); // == 21
alert(total); // == 20

【问题讨论】:

  • 哦,我明白了。您认为每次分配时都会添加1。这不是初始化的工作方式。它只是以1 开头,然后在每次迭代中用5 替换它。换句话说,1 是一个起始值。它对以后的任何其他操作没有其他影响。
  • ...这就像你的简单数学。如果你有1 并添加5,你会得到6。如果再次添加5,则得到11,以此类推...
  • 现在很清楚了,谢谢 :)

标签: javascript arrays loops iteration


【解决方案1】:

当你运行上面的代码时会发生这种情况

allto     |  i    |  total
___________________________
1         | -     | 0       //before loop start
6         | 0     | 5       // allto=1+5=6  and total=0+5=5
11        | 1     | 10       // allto=6+5=11  and total=5+5=10
16        | 2     | 15       // allto=11+5=16  and total=10+5=15
21        | 3     | 20       // allto=16+5=21  and total=15+5=20

所以最后allto=21total=20

【讨论】:

    猜你喜欢
    • 2016-02-10
    • 1970-01-01
    • 2017-07-06
    • 2012-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多