zoukankan      html  css  js  c++  java
  • 你不知道的JS系列 ( 10 ) - 立即执行函数表达式

    立即执行函数表达式(IIFE,Immediately Invoked Function Expression)
    (function foo(){
      var a = 3;
      console.log(3);
    })()
    这种 (funciton foo(){...})()。第一个 () 将函数变成表达式,第二个 () 执行了这个函数。
    相对于传统对 IIFE 很多人更喜欢另一个改进形式,((funciton foo(){...})()),第一种形式中函数表达式被包含在 () 中,然后在后面用另一个 () 括号来调用。第二种形式用来调用的 () 括号被移进了用来包装的 () 括号中。选择哪种全凭个人喜好。
    IIFE 的另一个进阶用法是把它们当作函数调用并传递参数进去
    var a = 2;
    (function IIFE(global){
      var a = 3;
      console.log(a); // 3
      console.log(global.a) // 2
    })(window);
    console.log(a); // 2

    在代码风格上对全局对象的引用变得比一个没有全局字样的变量更加清晰。可以从外部作用域传递任何你需要的东西,这对于改进代码风格是非常有帮助的

    IIFE还有一种用途是倒置代码的运行顺序,尽管这种模式略显冗长,但有些人认为它更易理解
    var a = 2;
    (function IIFE(def){
      def(window)
    })(function def(global){
      var a = 3;
      console.log(a); // 3
      console.log(global.a); //2
    })
  • 相关阅读:
    CUDA从入门到精通
    [Network] 计算机网络基础知识总结
    第三章 需求工程概论
    jsp学习
    算法——递推算法
    大话设计模式读书笔记--文章汇总
    轻松学SQL Server数据库
    Oracle数据库建表+添加数据练习
    《C#图解教程》 总览
    php发送get、post请求的6种方法简明总结
  • 原文地址:https://www.cnblogs.com/wzndkj/p/12340443.html
Copyright © 2011-2022 走看看