为什么以及如何在javascript中使用IIFE

and*_*d-k 1 javascript

在此示例代码中:

    (function(){
           var obj = function() {

           };

           obj.prototype.hello = function(){
                 console.log('Hello World!');
           };
    })();
Run Code Online (Sandbox Code Playgroud)

我看到很多图书馆在做这件事.为什么将代码包装在立即调用函数表达式(IIFE)中是一种好习惯?我如何在外面访问这个对象,就像jquery一样?

因为如果我做这样的事情:

   var test = new obj();
Run Code Online (Sandbox Code Playgroud)

浏览器显示obj未定义.

Ven*_*Ven 6

避免污染外部范围.你确定没有任何变量会"脱离"它.但是,是的,你确实需要导出它.window.obj = obj;从内部使用(使其成为全局)或返回它:

var obj = (function() {
  var obj = function() {};
  obj.prototype.sayHello = function() {}; 
  return obj;
})();
Run Code Online (Sandbox Code Playgroud)