全局对象守护神 - JS 的匿名自调用函数

更新日期: 2015-12-12 阅读次数: 6610 分类: Javascript

我们经常会看到类似的代码

<script type="text/javascript">
(function() {
  var a = 1;
  console.log(a);
})();
</script>

实际上这就是匿名自调用函数。

Self-invocation (also known as auto-invocation) is when a function executes immediately upon it’s definition.

使用自调用函数的主要目的是创建一个新的作用域,以防止引入新的全局变量,或者污染现有的全局变量

由于在 Javascript 中,使用函数是创建作用域的唯一方式,所以只能使用自调用函数。

实际上,非常好理解, 如果使用常见的方式是

<script type="text/javascript">
var f = function() {
  var a = 1;
  console.log(a);
};

f();
</script>

但是,这样会引入一个新的全局变量 f。

如果要传递参数呢?

<script type="text/javascript">
(function(name) {
  var a = "hello";
  console.log(a + ' ' + name);
})('zhongwei');
</script>

遇到不得不设置全局变量时,正确的姿势是怎样的?

使用 window, 例如

window.a = 1;

参考

关于作者 🌱

我是来自山东烟台的一名开发者,有敢兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式