• 立即调用函数(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的由来。

  • 相关阅读:
    virtualenv+pyenv管理python工作环境
    OpenStack 安装:neutron服务
    OpenStack 安装:nova服务
    node.js工具 nodemon使用
    js的数据类型及数据类型检测
    Git 工具
    Object.prototype.toString.call() 、 instanceof 以及 Array.isArray()判断数组的方法的优缺点
    重绘和回流及优化
    jsapi 调起微信支付的的踩坑
    总结Jquery中获取自定义属性使用.attr()和.data()以及.prop()的区别
  • 原文地址:https://www.cnblogs.com/zhaoxinmei-123/p/8908428.html
Copyright © 2020-2023  润新知