猿问

JavaScript for循环输出问题

for(var i=0;i<5;i++){
   function f(){
      console.log(i);
   }
}
f();

这段代码最后输出的是5。但是我理解的是遍历数组之后输出的不应该是1,2,3,4吗?麻烦懂得同学帮忙详细解释下。多谢!

咩咩咩3124927
浏览 2086回答 7
7回答

小白师兄

首先你要记住一个事情,函数是要经过调用才能执行的!在你的代码中,首先会执行for循环,在循环里面,虽然定义了f()函数,但是没有进行调用,所以,循环就从i=0,循环到i=5;但是没有办法执行f()函数,里面的console自然没运行,所以循环唯一的结果就是i从0走到了5然后循环结束;然后执行f()函数,因为这里被调用了,会执行以此console,但是这个时候i已经是5了,所以只输出5;你说的那个结果应该这样写: function f(){     for(var i=0;i<5;i++){        console.log(i);    } } f();一上来就直接执行被调用的f(),在函数里面直接循环5次,结果就是0,1,2,3,4

杜发明

循环体不能写方法体外部,这么给你说吧,一切的逻辑方法操作都先有的方法再有实体。

咕咕问

(function(d){console.log(d);})("ccc")

咕咕问

闭包    外部通过函数内部的方法调用函数中的成员变量,这个成员变量一直存在,直到方法结束。

Mr_SL

循环了5次但是没有调用f(),f()里的console.log(i),只有i变化了,但是f()没有输出。

我是大牛你信么

你的写法是将f函数定义了五次

摩诃迦叶

写反了。   function f(){for(var i=0;i<5;i++){       console.log(i);   }}
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答