为什么我无法读取嵌套函数中全局变量的变化?

古伯·扬

//这是关于嵌套函数和计时器函数的代码问题

    var num = 0; //the key of this problem
	var timer = null;
	timer = setInterval(function() {
        //num could change from 0 to 9 in this function
		console.log(num); 
		setTimeout(function() {
		console.log(num); //but in this place, num is always 0,why?
		}, 2000);	

		num++;					
		if (num >= 10) {						
			num = 0;
		clearInterval(timer);
		}
	}, 100);

TJ人群

为什么我无法读取嵌套函数中全局变量的变化?

你是。这只是一个逻辑错误,你的时间setTimeout会出现回调,你已经把它至0:您增加num每100ms,当它达到10将其设置为0,然后停止增量过程。2000毫秒后,您将显示的值num那时,它将为0,因为它在10圈后以100毫秒的间隔(早一秒)达到了0。

换句话说,会发生以下情况:

  1. 时间num0毫秒:您设置为0
  2. 时间setInterval0毫秒:您将重复间隔计时器()设置为100毫秒
  3. 时间〜100ms:间隔第一次触发:
    1. 设置2000ms之后的第一个回调
    2. 更改num为1
  4. 时间〜200ms:间隔第二次触发:
    1. 设置2000ms之后的第一个回调
    2. 更改num为2
  5. 再次发生在〜300ms(num-> 3),〜400ms(num-> 4),〜500ms(num-> 5),〜600ms(num-> 6),〜700ms(num-> 7),〜 800ms(num-> 8),〜900ms(num-> 3)
  6. 时间〜1000ms:间隔触发最后一次时间:
    1. 它在2000毫秒后设置了另一个回调
    2. 它将num设置为10,然后设置为0并取消间隔
  7. 时间〜2100ms:setTimeout触发第一个回调,显示num = 0
  8. 时间〜2200ms:setTimeout触发第二个回调,显示num = 0
  9. ...等等

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么在函数中无法访问我的全局变量?

来自分类Dev

了解为什么多线程无法读取全局变量

来自分类Dev

为什么我的函数和循环无法访问我的全局变量?

来自分类Dev

为什么我的包含函数无法获取全局变量值?

来自分类Dev

为什么我的函数不将值返回全局变量?

来自分类Dev

在 JavaScript 中,为什么这个全局变量在我的函数中未定义?

来自分类Dev

为什么我不能访问全局变量中的值

来自分类Dev

为什么我的javascript函数未将更改应用于我的全局变量?

来自分类Dev

为什么变量不是全局变量但函数是可以的?

来自分类Dev

为什么更新全局变量在导入函数中定义的函数中不起作用

来自分类Dev

Angular 2“ this”无法访问嵌套函数中的全局变量

来自分类Dev

为什么构造函数中的全局变量和参数变量不能具有相同的名称?

来自分类Dev

如何使用tkinter在嵌套函数中创建全局变量?

来自分类Dev

为什么导入函数定义的全局变量不改变?

来自分类Dev

为什么在BGE Python中变量不是全局变量

来自分类Dev

为什么我不能增加全局变量

来自分类Dev

为什么我的全局变量不起作用?(蟒蛇)

来自分类Dev

为什么我的全局变量为null?

来自分类Dev

为什么我的mod_python全局变量被重置?

来自分类Dev

为什么我不能访问该全局变量?

来自分类Dev

为什么我的 for 循环不使用更新的全局变量?

来自分类Dev

为什么全局变量会对函数调用中的编译器优化造成麻烦?

来自分类Dev

为什么在全局变量的析构函数中调用thread.join失败

来自分类Dev

为什么全局变量不会随同一个全局变量中的全局函数一起更新?安卓/Java

来自分类Dev

为什么我的全局变量没有在Test :: Class中初始化?

来自分类Dev

为什么我不能在WatchKit中更改全局变量的值-Swift?

来自分类Dev

为什么我的全局变量没有在Test :: Class中初始化?

来自分类Dev

为什么当我在函数名称中声明全局变量的局部数组声明bash时,bash会引发未绑定变量警告?

来自分类Dev

无法从类构造函数中访问全局变量

Related 相关文章

  1. 1

    为什么在函数中无法访问我的全局变量?

  2. 2

    了解为什么多线程无法读取全局变量

  3. 3

    为什么我的函数和循环无法访问我的全局变量?

  4. 4

    为什么我的包含函数无法获取全局变量值?

  5. 5

    为什么我的函数不将值返回全局变量?

  6. 6

    在 JavaScript 中,为什么这个全局变量在我的函数中未定义?

  7. 7

    为什么我不能访问全局变量中的值

  8. 8

    为什么我的javascript函数未将更改应用于我的全局变量?

  9. 9

    为什么变量不是全局变量但函数是可以的?

  10. 10

    为什么更新全局变量在导入函数中定义的函数中不起作用

  11. 11

    Angular 2“ this”无法访问嵌套函数中的全局变量

  12. 12

    为什么构造函数中的全局变量和参数变量不能具有相同的名称?

  13. 13

    如何使用tkinter在嵌套函数中创建全局变量?

  14. 14

    为什么导入函数定义的全局变量不改变?

  15. 15

    为什么在BGE Python中变量不是全局变量

  16. 16

    为什么我不能增加全局变量

  17. 17

    为什么我的全局变量不起作用?(蟒蛇)

  18. 18

    为什么我的全局变量为null?

  19. 19

    为什么我的mod_python全局变量被重置?

  20. 20

    为什么我不能访问该全局变量?

  21. 21

    为什么我的 for 循环不使用更新的全局变量?

  22. 22

    为什么全局变量会对函数调用中的编译器优化造成麻烦?

  23. 23

    为什么在全局变量的析构函数中调用thread.join失败

  24. 24

    为什么全局变量不会随同一个全局变量中的全局函数一起更新?安卓/Java

  25. 25

    为什么我的全局变量没有在Test :: Class中初始化?

  26. 26

    为什么我不能在WatchKit中更改全局变量的值-Swift?

  27. 27

    为什么我的全局变量没有在Test :: Class中初始化?

  28. 28

    为什么当我在函数名称中声明全局变量的局部数组声明bash时,bash会引发未绑定变量警告?

  29. 29

    无法从类构造函数中访问全局变量

热门标签

归档