【问题标题】:Why output doesn't apply the second variable为什么输出不应用第二个变量
【发布时间】:2017-08-18 15:27:34
【问题描述】:

我试图理解为什么等于 10 的变量 txt 在返回时不会应用于语句?如果我将变量设置为 10,它不应该在循环返回时应用于输出吗?

这是我的代码:

function myFunction() {
    var myNumber = 2; 
    var txt = 10;
    while (myNumber != Infinity) {
        myNumber = myNumber * myNumber;
        txt = txt + myNumber + "<br>";
    }
    document.getElementById("demo").innerHTML = txt;
}
<button onclick="myFunction()">Try it</button>

<p id="demo"></p>

【问题讨论】:

  • 我不清楚问题是什么。 apply 是什么意思?你期望的输出是什么?
  • 所以基本上我试图理解为什么第一个输出等于 14,但是当函数循环返回时,txt=10 不会应用于其余的输出。 @trincot
  • 在第一次迭代之前,它是数字10。在那次迭代之后,它是10 + 4 的总和,然后在最后转换为字符串&lt;br&gt;,所以"14&lt;br&gt;"。所以我不知道你想要什么输出,但如果你希望每个数字都被10 抵消,那不是因为10 不再存在。
  • 如果您希望 10 保持不变,请执行 txt = 10 + myNumber + "&lt;br&gt;";
  • 是的,现在我完全明白了!!!你们太棒了!!!!非常感谢....我在这里汗流浃背! @squint

标签: javascript html function while-loop conditional


【解决方案1】:

您的 var txt = 10 不在 while 循环内,因此不会在每个循环后重置。我假设您的问题意味着您希望每次运行 while 循环时都有 txt = 10 ,而只有 myNumber 递增。如果是这种情况,您可以将代码简化如下:

function myFunction() {
    var myNumber = 2; 
    while (myNumber != Infinity) {
        myNumber = myNumber * myNumber;
        var txt = 10 + myNumber + "<br>";
    }
    document.getElementById("demo").innerHTML = txt;
}

【讨论】:

  • 是的,不,我完全理解为什么输出是现在的样子谢谢你们!
【解决方案2】:

我认为问题在于您添加到 txt 的中断。如果我理解正确,这应该可以解决您的问题。

function myFunction() {
var myNumber = 2; 
var txt = 10;
var output = "";
while (myNumber != Infinity) {
    myNumber = myNumber * myNumber;
    txt = txt + myNumber;
    output = output + txt  + "<br>";
}
document.getElementById("demo").innerHTML = output;
}

【讨论】:

    【解决方案3】:

    变量确实随着循环的每次迭代而改变。

    让我们在每次迭代中都遵循这个值:

    #1 iteration: txt == 10 + 4 + "&lt;br&gt;" == "14&lt;br&gt;"

    #2 iteration: txt == "14&lt;br&gt;" + 16 + "&lt;br&gt;" == "14&lt;br&gt;16&lt;br&gt;"

    #3 iteration: txt == "14&lt;br&gt;16&lt;br&gt;" + 256 == "14&lt;br&gt;16&lt;br&gt;256"

    等等。此外,每次迭代时,您都会完全更改 &lt;p&gt; 的 HTML 代码,而不是使用 append 添加到其中。基本上变量 txt 会随着每次迭代而变化,并且您在 &lt;p&gt; 中显示它的最后一个值

    【讨论】:

      【解决方案4】:

      保存值 10 的 var text 将重新分配第一次迭代中设置的字符串的值。

      如果您退出 txt,这将是您在每次迭代中看到的内容:

      // 1) 14
      // Effectively '14<br>`
      // A result of 10 + (2*2) + <br>
      
      // 2) 14
      //    16
      // Effectively '14<br>16<br>`
      // This is because txt was '14<br>`
      // So '14<br>` + (4*4) + <br>
      
      // 3) 14
      //    16
      //    256
      // Effectively '14<br>16<br>256<br>`
      // This is because txt was '14<br>16<br>`
      // So '14<br>16<br>` + (16*16) + <br>
      

      等等……

      【讨论】:

      • 当你说退出时你指的是什么?
      • 我指的是console.log的使用
      猜你喜欢
      • 1970-01-01
      • 2020-01-19
      • 1970-01-01
      • 2011-11-19
      • 2021-12-11
      • 1970-01-01
      • 2023-02-10
      • 1970-01-01
      • 2015-08-04
      相关资源
      最近更新 更多