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

更新日期: 2015-12-12 阅读次数: 3175 分类: 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 聊聊。 白天工地搬砖,晚上哄熊孩子,可能回复有点慢,见谅。 查看更多联系方式

相关文章

爱评论不评论

近期节日

2019年12月20日 澳门回归日
2019年12月21日 国际篮球日
2019年12月22日 冬至
2019年12月24日 平安夜
2019年12月25日 圣诞节
查看更多节日