繁体   English   中英

对于循环反应感到困惑

Confused for loop in react

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

componentDidMount() {
    for (let i = 0; i < 3; i++) {
        let i = 'not a number'
        console.log(i)  // output only one time
    }
}

componentDidMount() {
    let i = 5 // add one line...
    for (let i = 0; i < 3; i++) {
        let i = 'not a number'
        console.log(i)  // output three times
    }
}

请注意,输出时间,如果直接在浏览器中运行这些循环,则这两个代码将输出3次,但作为响应,在for循环中仅输出1次。

1 个回复

我如何解决它?

更改第二个变量名称

为什么?

在您的React环境中,您最有可能使用像Babel这样的JS编译器。 Babel将使用您的代码并使之在大多数浏览器中可运行,因此您必须摆脱constlet某些浏览器不支持const ,babel会为您执行此操作并将其替换为var

有什么不同? constlet是块作用域的,而var是函数作用域的。 因此, i将您的变量提升(移动)到“函数”的顶部,并由所有人共享。 constlet是块作用域的,因此它们仅在各自的作用域内可见,在for循环的初始化程序中声明的i可以被初始化程序和后面的代码块看到,但是如果在follow块中声明另一个变量i ,它们将变为两个不同的变量,例如:

for (let i = 0; i < 3; i++) {
  // they act like two different variables and are independent of each other
  let g = 'not a number'
  console.log(g)
}
// 1: i = 0, g (inner i) = 'not a number'
// 2: i = 1, g (inner i) = 'not a number'
// 3: i = 2, g (inner i) = 'not a number'

虽然React被编译成这样的东西

// variable i gets hoisted to the top
var i;
for (i = 0; i < 3; i++) {
  i = 'not a number'
  console.log(i)
}
// 1: i = 0
// 2: i = 'not a number' ('not a number' < 3 is false) 
1 对 ranged for 循环感到困惑

对我来说,这不会产生预期的结果: 第二个for循环似乎没有做任何事情。 基于范围的for循环是只读的,还是我遗漏了什么? ...

2 由于for循环而感到困惑

我在程序中定义了一个used = []作为全局var 。 现在我有一个功能jimoti ,它在while Loop 。 在函数内部,我遍历了web-scraping(bs4)的结果,并将web-scarp的title添加到已used列表。 当title存在于已used我尝试不再次打印它,但 ...

4 我对这个反应错误消息感到困惑?

React 错误消息不会构建我的代码 我对路径和终端感到困惑...... 我已经尝试更改我的应用程序的名称,但这不起作用 https://gist.github.com/patrowheels/fece9597d6862094a1a3672b9d6cdecf ...

2020-07-20 22:48:10 1 25   reactjs
7 对 for 循环感到困惑 Python3

我一直试图通过在 YouTube 上观看有关 for 循环的教程以及从 python 和 google 阅读材料来解决这个问题。 但还有一件事我不明白。 我不明白 for 循环中 for 之后的规则。 有人可以看看我的示例代码并解释一下究竟发生了什么,以便在某一场合给出不同的输出和错误。 提前感 ...

9 对 while 循环 / indexOf() 感到困惑

我正在阅读 Beginning Javascript 一书,其中有一个使用 while 循环的示例,该示例返回单词“Wrox”在字符串中的次数。 不知何故,它返回 4,但它似乎应该返回一个更高的数字。 为什么 wroxCount 不更大? 就像这些都是一个事件 W -&gt; Wrox | ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM