javascript:手动调用自调用函数

时间:2017-06-29 08:42:09

标签: javascript

我有类似下面的代码:

inside self call
before inline call
ReferenceError: test is not defined

我需要调用一个函数(在代码的开头自我调用)。

在我看来,我无法调用自我调用的函数。但我不确定这是我第一次面对这种情况。这是我在控制台中得到的输出:

{{1}}

除了用其他名称重复功能代码之外,还有其他方法吗?

1 个答案:

答案 0 :(得分:0)

自调用函数表达式有自己的范围
本文描述并给出了一个解决方法:
https://christierney.com/2012/09/05/accessing-javascript-methods-from-outside-its-self-invoking-function-wrapper/

  

假设您有一个想要全局访问的方法,但是   想要一个自我调用函数来确保它是jQuery $   别名安全。

     

在此示例中,以下代码位于global.js中:

(function( $ ) {
   function showLoader( cfg ) {
      if( cfg == 'show') {
         $( '.loader' ).show();
      } else //more code...
   }
})(jQuery);
     

在此示例中,以下代码位于myPage.js中:

(function($) {
   showLoader( 'show' );
})(jQuery);
     

您会发现myPage.js无法访问showLoader()方法   即使在HTML页面中首先调用global.js。

     

对此的修复是将showLoader()方法推送到窗口   (全球)范围:

(function( $ ) {
   window.showLoader = function( cfg ) {
      if( cfg == 'show') {
         $( '.loader' ).show();
      } else //more code...
   }
})(jQuery);
     

通过将功能分配给窗口范围,它现在是全局的   无障碍。请记住它现在不再受到保护了   关闭但它仍然可以访问jQuery $别名。