为什么javascript函数无法从另一个脚本文件中访问?

时间:2018-01-16 19:36:24

标签: javascript jquery

我有一个问题,我一直在寻找答案,但似乎没有什么可以帮我做的。我引用了一个模仿我问题的问题,但解决方案仍然没有解决我的问题。

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>

我在这里做错了什么?

1 个答案:

答案 0 :(得分:2)

因为当你创建一个闭包时,它内部的任何东西只对该范围内的其他东西可见。

在JS中,所有函数都是闭包。

(function(){
    // this is a closure
})()

如果您希望能够从闭包之外获取文字函数,可以选择从函数中返回...

&#13;
&#13;
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;
&#13;
&#13;