有一种常见的技巧是使用 $
而不是 jQuery
,并将其包装在一个函数中,就像这样:
(function($) {
//Code here
})(jQuery);
现在,这个问题是你处于一个小的本地作用域中,这通常是好的,但如果你试图通过字符串构造动态调用函数名,则会出现问题:
let dynamic_name = some_function_name; //but should be dynamic, duh
window[dynamic_name]();
这样做是行不通的,因为你在本地作用域内操作,而不是在window
作用域内操作,所以它将无法找到该函数,例如:
(function($) {
//If we put this outside of this scope, it works.
function test() {
console.log('test');
}
let name = 'test';
window[name]();
})(jQuery);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
这也意味着,如果您的脚本作为库使用,您的函数将无法被调用,因为您将它们包装在匿名函数中。
那么如何解决这个问题呢?