关于js闭包的疑问,求大神帮忙

function createFunction(){
var result = new Array();

  for(var i=0;i<10;i++){
    result[i]=function(){
        return i;
    };
  }
  return result;

};

alert(createFunction());
为什么输出是function(){
return i;
}
这个闭包访问不到外包的函数的变量i?

 alert(createFunction()[0]());
 alert(createFunction()[i]());

这样才是调用了函数