Javascript函数未定义,可能存在命名空间问题?[复制]

Javascript function not defined, possible namespace issue? [duplicate]

提问人:user1765369 提问时间:3/27/2018 最后编辑:Carcigenicateuser1765369 更新时间:3/27/2018 访问量:164

问:

我不明白为什么。我怀疑这是一个命名空间问题,但该函数及其调用是在同一个文档就绪函数中定义的。

当我尝试在控制台中调用该函数时,我得到 calcPCs 未定义

$(document).ready(function() {
    function calcPCs(id) {

        var si = $(id).find(".Screened-In").text();
        var so = $(id).find(".Screened-Out").text();

        var ref = $(id).find(".Referred").text();
        var ret = $(id).find(".Retained").text();

        $(id).find(".Screened-In").append(' (' + Math.floor((+si / (+si + +so)) * 100) + '%)');
        $(id).find(".Screened-Out").append(' (' + Math.floor((+so / (+si + +so)) * 100) + '%)');

        $(id).find(".Referred").append(' (' + Math.floor((+ref / (+ref + +ret)) * 100) + '%)');
        $(id).find(".Retained").append(' (' + Math.floor((+ret / (+ref + +ret)) * 100) + '%)');
    };            

    calcPCs("#northwest");
    calcPCs("#northeast");
    calcPCs("#west");
    calcPCs("#east");
    calcPCs("#central");
    calcPCs("#gtr");
});
JavaScript jQuery 函数 命名空间

评论

0赞 Carcigenicate 3/27/2018
发布确切的错误。
0赞 user1765369 3/27/2018
对不起,我只是编辑了我的帖子。“未定义 calcPC”
1赞 Carcigenicate 3/27/2018
包括堆栈跟踪会有所帮助,因为错误似乎不在您提供的代码中。您一定是想在其他地方使用。calcPCs
0赞 Tom Dee 3/27/2018
您是否在其他地方调用 calcPC?
1赞 mplungjan 3/27/2018
@zzzzBov我们可以拥有其中之一吗?

答:

1赞 Máté Safranka 3/27/2018 #1

您无法从控制台进行呼叫。在控制台中键入的任何代码都在全局命名空间中执行,但在传递给的匿名函数中定义,因此计为该函数的局部变量。局部变量不能从函数体外部使用。calcPCscalcPCs.ready()

评论

2赞 Taplar 3/27/2018
附加说明。您可以从控制台执行该方法,前提是您在该方法可用的作用域内设置了一个断点。命中断点后,在断点暂停时,可以从控制台运行该方法。