3

只是想知道使用该样式是否有任何好处:(function() { <code> })();在您的脚本文件中继续库脚本。基本上是设置事件侦听器和其他初始化逻辑的地方。
例如:

<script>
(function() {
     $('div').on('click', 'a', function() {
          alert('click');
     });
})();
</script>

对比

<script>
     $('div').on('click', 'a', function() {
          alert('click');
     });
</script>
4

3 回答 3

2

不,第一个只是额外的代码。

现在可能会出现第一个会阻止创建全局变量的情况。

于 2012-04-09T21:08:28.177 回答
2

在这种情况下,自执行匿名函数的要点是避免在不需要真正的全局时定义全局函数或变量。由于您的示例两者都没有,因此在这种情况下不需要它。

自执行匿名函数为您提供了一个私有闭包来定义您想要的任何内容,并且它与外界隔离。它不会与任何外部代码发生冲突,并且外部代码不能直接访问闭包内的函数和变量。

至于你关于它是否是标准做法的问题,这真的取决于你。我个人认为这是一个好主意,因为这样您就可以自由定义辅助函数或偶尔的全局函数,而无需触及实际的全局空间。如果您正在使用$(document).ready(fn),那么您的初始化代码周围已经有一个闭包,因此您已经在这方面做好了准备。如果没有,这取决于你。我个人认为这是一个好主意,并且认为将其作为标准做法几乎没有缺点。当然,你必须记住,如果你需要一个真正的全局变量或函数,那么你必须在window对象上定义它,以便它在你的闭包之外可用。

于 2012-04-09T21:14:06.970 回答
0

您需要使用 jQuery(document).ready(function(){...}); 模型来设置事件监听器,否则嗯......好吧,jQuery 不会准备好。

于 2012-04-09T21:08:58.813 回答