我看到一些示例,其中包括 jQuery 和 jslint 的 JavaScript 代码使用以下表示法:
(function(){
// do something
})();
代替:
// do something
我一开始以为这只是局部作用域,即在不污染全局命名空间的情况下为代码块创建局部变量。但我也见过完全没有任何局部变量的实例。
我在这里错过了什么?
最佳答案
它也与函数的作用域有关——代码块中声明的所有内容都仅限于该匿名函数。事情通常由框架公开
(function($) {
var localVarOnly = "local";
$.fn.myCoolFunction = function() { // in the case of jquery, make this publicly available
otherCoolFunction(); //alerts hi
alert(localVarOnly); // alerts local
};
function otherCoolFunction() { // scoped to this anonymous function only
alert('hi');
};
})(jQuery);
otherCoolFunction(); // undefined
alert(localVarOnly); // undefined
关于javascript - 为什么要在函数定义调用对中编写全局代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2897987/