zoukankan      html  css  js  c++  java
  • 立即执行函数

    好久没发内容了:先发个简单的知识点

    我们都知道for循环

    for (var i = 0; i < 10; i++) {
        console.log(i)
    }
    //打印0-9

    那么,如果换成这两种呢?

    var a = null;
    for (var i = 0; i < 10; i++) {
        a = function(){
            console.log(i);
        }
        a();
    }
    //打印0-9
    var a = null;
    for (var i = 0; i < 10; i++) {
        a = function(){
            console.log(i);
        }
    }
    a();
    //打印10

    为什么会有两种不同的结果,说到这儿大家都想到了立即执行函数

    当函数在for循环内执行的时候,循环一次函数执行一次打印一次 i , 所以 i 的值也在变化。

    反之,当函数在for循环外执行的时候, 函数是在for循环执行完毕后才执行, 此时的 i 的值也变为10了, 所以打印结果不同。

    很多时候我们都需要在循环的过程中绑定函数,但却不立即执行,针对此种情况, 建议将var 改为 let;

    for (var i = 0; i < elements.length; i++) {
        elements[i].onclick = function(){
            console.log(i)
        }
    }
    //点击不同的element(存放绑定点击事件的DOM),打印出来的是0-elements.length元素的索引

    简单写一下,建议多做测试,这样才能更好理解

  • 相关阅读:
    第九周
    第七周.
    第六周.
    第二次作业
    第九周作业
    第八周作业
    第七周作业
    第六周作业
    第五周作业
    统计一行文本的单词个数
  • 原文地址:https://www.cnblogs.com/xihailong/p/11897182.html
Copyright © 2011-2022 走看看