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
    })
  • 相关阅读:
    Mac上安装使用Nginx
    突然想到了王自如
    sqls
    spring利用后置处理器初始化bean属性
    replace的用法
    Redis使用记录
    netty handlers模式
    webmagic 下载页面
    webmagic 初始化 startRequests
    Singleton模式
  • 原文地址:https://www.cnblogs.com/wzndkj/p/12340443.html
Copyright © 2011-2022 走看看