当前位置: 首页 > 知识库问答 >
问题:

javascript - for循环中setTimeout打印结果不同的原因是什么?

庄元龙
2023-09-10

下面三段代码的输出结果不同,前端初学者想请问一下背后的原因是什么(学不明白)

for(var i = 0;i < 3;++i){    setTimeout((i) => {        console.log(i)    },0);}// 输出 undefined undefined undefinedfor(var i = 0;i < 3;++i){    setTimeout(function (){        console.log(i)    },0);}// 输出 3 3 3for(var i = 0;i < 3;++i){    setTimeout(        console.log(i),0);}// 输出 1 2 3

共有1个答案

樊熠彤
2023-09-10

看这个问题,我想或许去了解一下 JS 中的变量作用域的相关问题就可以了。

要不参考一下这个,学习一下,或许有帮助 https://zhuanlan.zhihu.com/p/590650432

 类似资料:
  • 问题内容: 我有这个脚本: 但被警告两次,而不是那么。 有没有一种方法可以传递而不将函数编写为字符串? 问题答案: 您必须为每个超时功能安排一个单独的“ i”副本。 如果您不做这样的事情(同一想法还有其他变体),那么每个计时器处理程序函数将 共享 相同的变量“ i”。循环结束后,“ i”的值是多少?3!通过使用中间函数,将 复制 变量的值。由于超时处理程序是在该副本的上下文中创建的,因此它具有自己

  • 需要一些专家的建议。首先,这里是我的代码: 我的问题是:当我输入一个用户号码如“3”时,提示我的代码只打印一个__当我希望它打印指定的号码。我无论如何也想不出来。 我是英语专业的,所以这不是我的强项:(形状应该是菱形的。)

  • 问题内容: 专家。JavaScript无法产生所需的延迟效果。 从其他问题上,我因此知道,问题在于settimeout及其使用方式。但是我仍然无法理解Settimeout的工作原理。所以我将代码放在这里。由于知识目的,仅需使用Javascript。 实际上,我正在尝试清除有关 此的 概念,即javascript中的 闭包 。它们是Java的扭曲事物吗? 问题答案: 您有两个问题: 调用回调时将具有

  • 大家好,我被一个问题困住了,想不出解决办法。我使用的是while循环,do while循环和for。我知道我的前两个while循环是正确的,我试图完成的是让我的do while循环和for语句打印出与我的第二个while循环相同的东西。 输入要打印的消息? 你好 输入要打印邮件的次数。输入1-20之间的值: 5 使用do-while循环输出... 第6.0行-你好 do-while循环中的时间..

  • 问题内容: 我试图打印/获取循环变量i的值,并在for循环之外的另一种方法中使用它。我怎么做? 问题答案: 语句中声明的变量仅在组件和以下代码块的范围内,尤其是请参阅JLS 14.14.1.1节 : 如果ForInit代码是局部变量声明,则将其执行为好像是出现在块中的局部变量声明语句(第14.4节)一样。 如果您想在之外使用它,则必须在要访问它的位置中处于活动状态的作用域中声明它;例如,就在循环之

  • 我可以打印最大罚款,但我不能打印计数。我看不出max和count之间的区别,也看不出为什么它不让我打印count。感谢任何帮助