zoukankan      html  css  js  c++  java
  • 使用IIFE(立即执行函数)让变量私有化

    今天去看了一个GITHUB上的开源项目,在客户端JS的脚本编写的时候,代码中多次使用了IIFE
    一开始我是懵逼的,不知道这种函数的意义何在,小菜鸟嘛。
    后面我去研究了一番。发现了它的主要作用就是:让变量私有化
    这里给出一个例子:

    (function () {
        var foo = "bar";
    
        // Outputs: "bar"
        console.log(foo);
    })();
    
    // ReferenceError: foo is not defined
    console.log(foo);
    

    当然,这些是可以使用普通命名函数就能做到的事,凭什么就要IIFE

    那么我们为什么还要用IIFE呢?我抱着这个问题,又去实践了一番,发现了IIFE除了它的主要作用外,还有以下三个优点:

    1. 避免了在全局中使用命名空间。因为IIFE可以用匿名函数直接运行。楼主你可以把foo去掉直接运行。
    2. 使用IIFE是自运行的,而不需要你再次去调用,英文中说的是:self-documenting,。
    3. 普通命名函数,不是立即运行的,你可能会在某个地方错误调用它。

    然而,现在是ES6的时代了,有了块级作用域的出现,这种函数的作用已经被let、const替代了,所以能看见他们出现的场景不多了。
    但是,知道技术是为什么设计出来的还是很不错的。

  • 相关阅读:
    第 2 章 OpenStack 架构
    第 2 章 OpenStack 架构
    第 1 章 虚拟化
    第 1 章 虚拟化
    第 1 章 虚拟化
    第 1 章 虚拟化
    第 1 章 虚拟化
    第 1 章 虚拟化
    第 1 章 虚拟化
    第 1 章 虚拟化
  • 原文地址:https://www.cnblogs.com/wljqds/p/IIFE.html
Copyright © 2011-2022 走看看