我们经常会看到类似的代码
<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;
参考
- A Week in JavaScript Patterns: Self-invocation
- Why do you need to invoke an anonymous function on the same line?
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式