1

我有如下所示的代码。已经删除了不需要的代码,只写了需要的。当我从正文中的内联脚本调用我的 toggleFunc 时,它在控制台中显示该函数未定义。谁能告诉我这有什么问题?

<head>
<script src="~/Client/js/lib/jquery-1.10.2.js"></script>
<script type="text/javascript">
    $(document).ready(function(){
        var pageInitialize = function () {  

            ..doing something here

            function toggleFunc() { 
               ..doing something more here
            };
        };
        pageInitialize();
    });
</script>
</head>
<body>
<script>toggleFunc()</script>
</body>
4

3 回答 3

4

在 DOMReady 触发之前,您的两个函数都不会被定义,这将在对toggleFuncin 的调用body运行之后发生。此外,toggleFuncpageInitialize函数内,因此在外部不可访问pageInitialize

尝试这个:

<script type="text/javascript">
    var pageInitialize = function () {  
        //..doing something here
    };
    pageInitialize();

    function toggleFunc() { 
        //..doing something more here
    };
</script>
于 2014-07-14T07:15:35.123 回答
1

两个问题:

  1. toggleFunc不是全局函数。它是本地的pageInitialize。如果您希望它是全局的,请将其分配给window.

  2. 您在$(document).ready回调中定义函数,该函数将在将来的某个时间执行。您在回调之外立即调用该函数$(document).ready。它还没有被定义。

于 2014-07-14T07:16:13.343 回答
0

toggleFunc()是一个无法从全局范围调用的闭包。

它甚至在您使用时被定义之前也被调用$(document).ready

于 2014-07-14T07:18:39.677 回答