有一种非常常见的技术来编写$而不是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>
这也意味着如果您的脚本被用作库,则您的函数不可调用,因为您将它们包装在匿名函数中。
你如何解决这个问题?
相关分类