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元素的索引

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

  • 相关阅读:
    Hadoop Python 调用自定义so动态库
    Golang Redigo连接Redis 简单使用
    Golang 错误 "bad file descriptor"
    Centos Git 安装与升级
    初识数据库
    MySQL介绍,下载和安装
    并发编程:协程
    并发编程:多线程
    并发编程:多进程
    操作系统,进程理论
  • 原文地址:https://www.cnblogs.com/xihailong/p/11897182.html
Copyright © 2011-2022 走看看