首页 > 其他 > 详细

使用IIFE(立即执行函数)让变量私有化

时间:2019-03-28 16:38:36      阅读:189      评论:0      收藏:0      [点我收藏+]

今天去看了一个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替代了,所以能看见他们出现的场景不多了。
但是,知道技术是为什么设计出来的还是很不错的。

使用IIFE(立即执行函数)让变量私有化

原文:https://www.cnblogs.com/wljqds/p/IIFE.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!