我遇到了代码变量名称相互冲突的问题,即;
<script type="text/javascript">var a = "hello"; </script>
<script type="text/javascript">alert(a);//this works, when I want 'a' not to exist </script>
关闭是唯一的选择吗?
来自c#背景,就像构造一个未引用的委托(delegate)实例,然后调用它内联,这看起来有点乱
(function(){var a = "hello";})();
(function(){alert(a);})();//yes! working as expected
最佳答案
使用(立即自执行的)函数来创建新范围确实是可行的方法。
这还有一个好处,就是可以确保某些变量具有某些值。使用 jQuery 时,以下是常见的示例:
(function($, window, undefined) {
// ...
})(jQuery, this);
除非你有大量的函数,每个函数只有一个语句(就像你的例子一样),否则它也是完全可读的。
关于javascript - 防止 'global' 在 javascript 中的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10999070/