setTimeout的作用域
scope of setTimeout
本文关键字:作用域 setTimeout 更新时间:2023-09-26
假设我有一个这样的JS代码
var num = 0;
function foo(input){
num = input;
}
function bar(){
setTimeout(foo(2), 100);//1
setTimeout(function(){foo(5);},100);//2
alert("num =" + num);//3
}
使用1和3的结果是什么.....2和3……我有结果,但不能理解行为……任何帮助将感激与详细解释…
这不是"范围"的问题,而是时间的问题。
-
会产生将
num
设置为2的副作用。foo(2)
现在执行,结果(垃圾)传递给setTimeout
。(即在超时回调中,foo(2)
是而不是作为/运行) -
将在~100毫秒后调用
foo(5)
。匿名函数作为回调函数,反过来调用foo(5)
,这将产生将5赋值给num
的副作用。 -
提醒现在。值将是"num = 2",因为
foo(2)
现在运行(好吧,就在之前;-),但foo(5)
在回调将在稍后的一段时间运行(因此没有机会设置num
)。
快乐编码。
相关文章:
- 监视函数从服务返回不起作用,但作用域函数起作用
- 将作用域存储在JSON中
- 从控制器继承了隔离的作用域以生成可重用的指令
- 从ng模板访问作用域
- 调用私有作用域
- 对父作用域的指令更新延迟了一步
- 正在$rootScope上达到控制器作用域$在内部控制器上
- 两个指令创建新的继承的和隔离的作用域-元素得到哪个
- 这两个关于 JavaScript 作用域链的例子有什么区别?
- 在具有命名作用域的自定义Polymer元素中隐藏表行
- AngularJS指令隔离作用域
- Javascript setTimeout作用域引用了错误的变量
- Javascript 中使用 setTimeout 的作用域问题
- 在setTimeout中重定向到当前作用域之外的变量中的位置
- JavaScript setTimeout作用域问题
- Backbone model.fetch()回调(调用setTimeout)中的作用域问题
- google maps api 3 - JavaScript变量作用域- setTimeout阻止代码看到数组
- 在Javascript中,setTimeout中使用的变量的作用域是什么?
- 使用setTimeout指定变量的作用域
- setTimeout的作用域