说明
我有这个功能,我正在玩。我们的想法是启动一个具有自执行功能的列表,然后在自执行功能中调用该自执行功能。
var arr = [(function(){
//when first entering here arr is currently undefined
//here I call an asynchronous function that will start in 1 second
setTimeout(function(){
//1 second has passed so arr has been initiated.
//Notice that arr[Ø] is undefined and arr[1] isn't
//Why?
console.log('Why is this: ' + arr[0] + ' and ' + arr[1] + ' isnt ');
}, 1000);
})(), 2];
所以最后我正在尝试创建一个循环。
问题:
在自执行函数中,我创建一个setTimeout并等待1秒钟让我的arr完成启动。为什么arr[0]
未定义且arr[1]
不是?是否有可能以这种方式创建循环?
最终工作demo:感谢NoDownVotesPlz
答案 0 :(得分:2)
arr[0]
未定义,因为函数不返回函数中的任何内容,
如果你想展示一些价值,你应该在setTimeout
后从函数中返回它:DEMO
var arr = [(function() {
setTimeout(function() {
document.write('Why is this: ' + arr[0] + ' and ' + arr[1] + ' isnt ');
}, 1000);
return 1 // return here
})(), 2];