我有一个问题,我一直在寻找答案,但似乎没有什么可以帮我做的。我引用了一个模仿我问题的问题,但解决方案仍然没有解决我的问题。
Accessing function in another .js file with $.getScript
我的问题是我提到的类似问题。我无法从另一个脚本文件访问脚本文件中的方法。这些是我的代码:
page.js
$(document).ready(function () {
$.getScript('script.js').done(function () {
$('#build').append(literals.test()); // $('#build') is a span tag in the HTML-file.
}).fail(function () {
console.warn('Unable to load script file.');
});
});
的script.js
(function ($) {
var literals = {
test: function () {
return 'Hello world!';
}
};
})(jQuery);
即使我构建它的方式与引用问题的答案几乎完全相同,但仍然会返回以下错误。
Uncaught ReferenceError: literals is not defined at Object.<anonymous>
我在这里做错了什么?
答案 0 :(得分:2)
因为当你创建一个闭包时,它内部的任何东西只对该范围内的其他东西可见。
在JS中,所有函数都是闭包。
(function(){
// this is a closure
})()
如果您希望能够从闭包之外获取文字函数,可以选择从函数中返回...
const literals = (function($){
return {
test: function () {
return 'Hello world!';
}
};
})(jQuery);
console.log(literals.test());
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;