我有类似下面的代码:
inside self call
before inline call
ReferenceError: test is not defined
我需要调用一个函数(在代码的开头自我调用)。
在我看来,我无法调用自我调用的函数。但我不确定这是我第一次面对这种情况。这是我在控制台中得到的输出:
{{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 $别名。