javascript - js 中定时器传参的问题
大家讲道理
大家讲道理 2017-04-10 18:04:59
[JavaScript讨论组]

1

for(var i = 0; i < 4; i++) {
    
        setTimeout(function(i) {
            console.log(i);  
        }, (i + 1) * 1000);
}

2

 for(var j = 0; j < 4; j++) {
    (function(i) {
        setTimeout(function() {
            console.log(i);  
        }, (i + 1) * 1000);
    })(j);
}

第二个我知道是立即执行函数(只是传了个参数,不算是闭包哈),第一个访问不到是不是因为当函数执行时,其上下文执行环境是window中,从而访问不到i。
还有一个疑问,如果我想给setTimeout(fn,1000)中的fn传实参,我一般该怎么传?
setTimeout( fn(实参) ,1000)这样是不行的啊,fn会立即执行,除了类似第二个,我还想到当i是window中的变量也可以访问到,大家有什么其它的办法吗?

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(1)
PHP中文网
for(var i = 0; i < 4; i++) {
    
        setTimeout(function(i) {
            console.log(i);  
        }, (i + 1) * 1000, i);
}
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号