【问题标题】:The Logic of forEach() when works with variables in javascript?javascript中的变量使用forEach()的逻辑?
【发布时间】:2021-12-14 21:05:34
【问题描述】:

代码的结果是:

test0: apple
1: orange
2: cherry

我想知道为什么我的文本变量在第二个和第三个循环中等于“”,我希望将以前的值添加到文本变量的初始值中,谁能解释一下文本变量会发生什么以及什么这个例子中forEach的逻辑是什么?

let text = "test";
const fruits = ["apple", "orange", "cherry"];
fruits.forEach(myFunction);

document.getElementById("demo").innerHTML = text;

function myFunction(item, index) {
  text += index + ": " + item + "<br>";
}
&lt;p id="demo"&gt;&lt;/p&gt;

【问题讨论】:

标签: javascript variables foreach logic let


【解决方案1】:

您的循环运行使得文本test 仅添加一次。在开始和之后更新变量text

如果您想在每次迭代中添加,只需将其保存在单独的变量中并继续添加。

let text = "";
let test = "test";

const fruits = ["apple", "orange", "cherry"];
fruits.forEach(myFunction);

document.getElementById("demo").innerHTML = text;

function myFunction(item, index) {
  text = text + test + index + ": " + item + "<br>";
}
&lt;p id="demo"&gt;&lt;/p&gt;

【讨论】:

    【解决方案2】:

    您的代码按预期工作。使用 innerText 而不是 innerHTML 可能会阐明这种情况

    let text = "test";
    const fruits = ["apple", "orange", "cherry"];
    //fruits.forEach(myFunction);
    
    document.getElementById("demo").innerText = text;
    
    function myFunction(item, index) {
      text += index + ": " + item + "<br>";
      document.getElementById("demo").innerText = text;
      console.log(item,index);
    }
    
    window.setTimeout( myFunction.bind(null,fruits.shift(),0), 1000);
    window.setTimeout( myFunction.bind(null,fruits.shift(),1), 2000);
    window.setTimeout( myFunction.bind(null,fruits.shift(),2), 3000);
    &lt;p id="demo"&gt;&lt;/p&gt;

    【讨论】:

      猜你喜欢
      • 2021-11-09
      • 1970-01-01
      • 2012-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-06
      相关资源
      最近更新 更多