使用数组和自执行函数创建循环

时间:2015-03-16 11:11:57

标签: javascript

说明

我有这个功能,我正在玩。我们的想法是启动一个具有自执行功能的列表,然后在自执行功能中调用该自执行功能。

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

最终工作demo:感谢NoDownVotesPlz

1 个答案:

答案 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];