1

我将下面的脚本分配给公共 Javascript 命名空间。它们在本地都可以正常工作,我可以调用TEST.loading(true)并且所有行为都按预期进行,但是当我将它们部署到我的远程服务器时,我在 Chrome/Firefox 控制台中收到以下错误;未捕获的类型错误:TEST.loading 不是函数

我无法弄清楚为什么它会在本地而不是远程工作。我认为这不会有任何区别,但是我正在使用 MVC 捆绑包来部署脚本,并且我已经检查了 Chrome 的网络输出,并且脚本正在正常加载,我可以看到里面的代码......任何建议?

var TEST = TEST || 
{
    dtFormat: "DD MMMM YYYY HH:mm",

    loading: function loading(showLoading) {
        if (showLoading) {
            if (Modernizr.cssanimations)
                $("#loadingAnimation").show();
            else
                $("#loadingStatic").show();
            $("#loadingContainer").show();
        }
        else {
            if (Modernizr.cssanimations)
                $("#loadingAnimation").hide();
            else
                $("#loadingStatic").hide();
            $("#loadingContainer").hide();
        }
    }
};
4

1 回答 1

3

当该代码运行时,它似乎TEST已经定义了一个真实值,使该代码成为空操作。

如果您想确保始终添加您的属性,无论它是否已经存在,这是通常的模式:

var TEST = (function(t) {
{
    t.dtFormat = "DD MMMM YYYY HH:mm";

    t.loading = function loading(showLoading) {
        if (showLoading) {
            if (Modernizr.cssanimations)
                $("#loadingAnimation").show();
            else
                $("#loadingStatic").show();
            $("#loadingContainer").show();
        }
        else {
            if (Modernizr.cssanimations)
                $("#loadingAnimation").hide();
            else
                $("#loadingStatic").hide();
            $("#loadingContainer").hide();
        }
    };

    return t;
})(TEST || {});

这还具有为您提供私有函数的方便范围的优点。

于 2015-08-20T17:29:56.697 回答