zoukankan      html  css  js  c++  java
  • 立即调用函数(IIFE)

    定义:

    IIFE:立即调用的函数表达式,声明函数的同时立即调用这个函数。


    语法:

    IIFE的常用写法:这两种写法的作用相同,只是表现形式不同而已,()只是起了自执行的作用

    (function(){......})() 把函数当作表达式解析,然后执行解析后的函数[相当于 var a = function(){}; a(); a得到的是函数]

    (function(){......}())是把函数表达式和执行当作语句直接执行[相当于 var a = function(){}(); a得到的是结果]

    传统写法:

    声明:function func(){......}

    调用:func();

    IIFE其他写法:

    !function foo() {...}();

    +function foo() {...}();


    IIFE和传统写法的区别:

    IIFE:是用一个()把函数声明括起来了,让js编译器知道,这是一个需要立即执行的函数;

    传统:声明函数之后,只有在调用的时候才会执行函数,并且直接污染全局命名空间。

    说明:所谓不去污染全局命名空间,是因为 IIFE 创建了一个新的函数作用域,你真正的业务代码被封装在其中,自然就不会触碰到全局对象了。如果你需要全局对象,那就 pass 给 IIFE:

    void function (global) {
        // 在这里,global 就是全局对象了
    }(this)    // 在浏览器里,this 就是 window 对象


    为什么要使用IIFE:

      在js中只有function才能实现作用域的隔离,如果要将一段代码中的变量、函数等的定义隔离出来,只能将这段代码封装到一个函数中。

           在我们通常的理解中,将代码封装到函数中的目的是为了复用,在JS中,当然声明函数的目的在大多数情况下也是为了复用,但是JS迫于作用域控制手段的贫乏,我们也经常看到只使用一次的函数:这通常的目的是为了隔离作用域,既然只使用一次,那么立即执行好了,既然只使用一次,函数的名字也省掉了,这就是IIFE的由来。

  • 相关阅读:
    类的无参方法
    类和对象的案例
    类和对象的实例
    类和对象
    【Java】【1】String数组和List相互转换
    【Oracle】【5】去掉字符串最后一个特殊字符
    【其他】【Restful】【1】简单了解Restful概念
    【IDEA】【7】Git更新及提交
    【IDEA】【6】Maven打包
    【IDEA】【5】快捷键
  • 原文地址:https://www.cnblogs.com/zhaoxinmei-123/p/8908428.html
Copyright © 2011-2022 走看看