【问题标题】:How does this while block work? [closed]这个 while 块是如何工作的? [关闭]
【发布时间】:2015-07-27 20:45:48
【问题描述】:
var result = 1
var counter = 0
while (counter < 10) {
     result = result * 2
     counter += 1
};

console.log(result);

我很困惑计数器更新结果如何?我们将 counter 增加 1,但这对结果有何影响?

有人可以把它给我说清楚吗?我是编程新手。

编辑:我知道这个问题已经被问过很多次了。我搜索了很多答案,但没有得到我需要的信息。我有一个非常具体的疑问并想澄清它,所以请在那个向下按钮上放轻松。 :)

[已解决]

与 for 循环相同的代码。

var result = 1
for (counter = 0; counter < 10; counter++) {
  result *= 2;
};
console.log(result);

【问题讨论】:

  • 你看到这条线了吗? result = result*2
  • counter 不影响result,用于控制循环。每次循环 result 乘以 2,然后该结果将在下一次用作 result

标签: javascript while-loop


【解决方案1】:

你的意思是:

loop | counter |  result  | counter < 10
  1       1          2           yes
  2       2          4           yes
  3       3          8           yes
  4       4          16          yes
  5       5          32          yes
  6       6          64          yes
  7       7          128         yes
  8       8          256         yes
  9       9          512         yes
  10      10         1024        no end of loop


  console.log(result);   ->    1024

【讨论】:

    【解决方案2】:

    resultcounter 在这段代码中是具有不同目标的独立变量。

    counter 递增

     counter += 1
    

    所以最终while 条件

    while (counter<10)
    

    将满足,代码将停止执​​行。

    对于result,每次执行while块中的代码,result乘以2更新

    result = result*2
    

    它是“更新的”,因为变量result 是在while 循环之外初始化的,但可以被它访问。使用上述语句,它获取现有的 result 变量并将其乘以 2,然后将其存储回 result

    【讨论】:

    • 嘿,我想知道结果是如何工作的?据我了解,它是这样的:首先它结果为 2,但由于条件为真,它再次重复,但这次它从 2 继续并给出 4。条件仍然为真,因此它给出 8 16,最后是 1024。但是它如何给出 2 的指数呢?它是否存储该值并在重复时将该值乘以 2?就像在第一轮之后它存储 2 并且在第二轮乘以 2*2 并存储 4 以供下一轮使用。在下一回合 4*2 然后存储 8 以供下一回合使用。这种情况一直在发生,直到条件变为错误
    • 在第 10 轮(或当计数器值为 9 时),它最终给了我最后存储的值,恰好是 1024。我的推理是否正确? :)
    • @MarineBiologist,是的,你似乎走在正确的道路上。请参阅最后关于结果变量的更新答案。
    • 明白,谢谢。那么如果结果是局部变量而不是全局变量,这将不起作用?
    • 是的,如果它是本地的,那么每次结果变量都会“重新初始化”并且始终为“2”。需要明确的是,本地意味着如果结果变量是在 while 循环内初始化的。
    猜你喜欢
    • 1970-01-01
    • 2014-12-04
    • 2012-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-27
    相关资源
    最近更新 更多