如果变量在settimeout之后但在它真正运行之前发生了变化怎么办?
what if variable changes after settimeout but before it really run
function fun(x){alert(x);}
var i=1;
var t=setTimeout(function(){ fun(i) },10000);
i=2;
所以当fun(x)真正运行时,什么将被提醒。
如果结果是2,如何使x等于1
由于某些原因,我不能使用全局变量。
thx
更新事实上,我需要在for(){} thing;
中使用这样的东西所以最好的方法是这样:
setTimeout("testDisplay(" + aa + "," + bb + ")",1000);
您可以使用额外的作用域。这在所有浏览器中都有效。
var i=1, t;
(function () {
var tmp = i;
t=setTimeout(function(){ fun(tmp) },10000);
})();
i=2;
function fun(x){alert(x);}
var i=1;
var iCopy = i;
var t=setTimeout(function(){ fun(iCopy) },10000);
i=2;
相关文章:
- 为什么属性存在于对象实例上,即使其原型发生了更改
- Javascript函数 - 通过引用复制,但这里发生了什么
- 套接字发生了什么's在'断开连接'事件(服务器端)
- 这段代码中发生了什么
- Wamp没有识别出我的代码发生了更改
- 如何检查输入框值在使用淘汰之前是否发生了更改
- 通过它访问HTML元素's id DIRECTLY-这里发生了什么
- window.opener引用在Java 1.7.0_04-b20中从Applet重定向期间发生了更改,但在1.7.0_
- 如何知道JS对象属性的值在哪一行发生了更改
- 查找表单的哪些特定部分在输入时发生了更改
- JavaScript's数组过滤器函数在没有分配函数的情况下使用-这里发生了什么
- 起重行为在铬 48 和 49 之间发生了变化
- 这个JavaScript函数中发生了什么
- 我的输入字段听到除回车之外的每个“键下”事件.我有一个日期选择器,不确定发生了什么
- isPrototypeOf 说不,但实例说是——发生了什么
- 找出 Vue.js 深度自定义指令中哪个属性发生了变化
- 十分钟内的 Javascript:此示例代码中发生了什么说明惰性范围
- 键控后 AJAX 发生了一些奇怪的事情
- 发送到前端后,mysql 列中的日期发生了变化
- 如果变量在settimeout之后但在它真正运行之前发生了变化怎么办?