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

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

相关文章

爱评论不评论

近期节日

2020年07月22日 大暑
2020年07月30日 非洲妇女日
2020年08月01日 八一建军节
2020年08月06日 国际电影节
2020年08月07日 立秋
2020年08月15日 日本投降日
2020年08月22日 处暑
2020年08月25日 七夕
2020年09月02日 中元节
2020年09月03日 抗日胜利纪念日
2020年09月07日 白露
2020年09月08日 国际扫盲日
查看更多节日