循环和函数的使用

循环和函数的使用

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Document</title>

</head>

<body>


    <script>

         var arr=[];

     for(var i=0;i<3;i++){

                  

         (function(){

           arr[i]=i;

           

        }())

    }

    console.log(arr);

    </script>

</body>

</html>

请问老师,在循环里写函数的话,并不会循环执行函数里的代码是嘛,而是调用的函数才执行,这就导致循环和函数不是同步的,所以循环里的变量比如 i ,不能在函数中取到所有的i值,只能取到循环完之后的值是么。

但是如果循环里面的函数是立即执行的,比如上述的代码,这样循环和函数算是同步的,所以函数里的i可以取到循环的每一个i值。

是这样理解的么

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕星星 2019-06-05 16:12:29

你好,理解是可以的,但是不适用于这个例子,这个例子即使没有立即执行函数,arr数组中的值也是1,2,3 。这是因为每循环一次,就会执行arr[i]=i,赋值一次,是同步的,所以拿到的是正确的。

一般这样情况是有问题的,循环绑定点击事件:

http://img1.sycdn.imooc.com//climg/5cf7794c00019d1206470381.jpg

点击的时候才会执行onclick后面的function,所以拿到的是循环之后的i值。

祝学习愉快!

  • 提问者 浮沉幻听 #1
    绑定事件函数这个我懂的,因为点击才触发后面函数,而外面的循环是上来就执行的,并不同步,所以事件触发函数只能取循环结束的最终值。 但是上面的例子,如果不是立即执行函数,而是一个自定义函数,但是不在循环里调用,在外面调用的话,并不会循环一次就给数组赋值一次吧,最终只能得到前三位是空,最后一位是3的数组。
    2019-06-06 16:42:17
  • Miss路 回复 提问者 浮沉幻听 #2
    同学,你好。函数只要不调用,只是定义的话就不会执行,不管是不是在循环内。 祝学习愉快!
    2019-06-06 19:30:01
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
前端小白入门系列课程
  • 参与学习           人
  • 提交作业       11218    份
  • 解答问题       36713    个

从一个不会编程的小白到一个老司机是需要过程的,首先得入门,学习基础知识,然后才能进阶,最后再到精通,本专题是你走进前端世界的不二选择!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师