脚本标记之间的 JavaScript 函数作用域

JavaScript function scope between script tags

本文关键字:JavaScript 函数 作用域 之间 脚本      更新时间:2023-09-26

我有两个不同的 JSP,Java 后端将它们连接在一起并发送回同一个呈现的 HTML 页面。

每个 JSP 都有自己的<script>块,并在该块内定义函数:

JSP #1:

<script type="text/javascript">
    function blah() { ... }
</script>

JSP #2

<script type="text/javascript">
    function foo()
    {
        blah();
    }
</script>

就像我说的,后端将这些添加到HTTP响应中,并在同一请求期间将它们发送回浏览器。

当我在浏览器中运行此页面时,我可以立即判断blah()在被调用时foo()未执行。我在Firebug中看到一个控制台错误,指出未定义blah()。我想知道blah()是否只有自己的<script>标签内的范围,同样适用于foo().是这里的情况,还是其他不对劲的地方?

当我去查看页面源代码时,我看到了脚本块和两个函数。这告诉我一切都在服务器端正确生成/渲染,但也许我的方法本质上是错误的(定义不同脚本标签中的函数)。提前谢谢。

它们都是全局的。 他们可以看到彼此。 问题是当它们被定义并相互调用时。

您应该按以下顺序定义和调用它们:

  1. 酒吧
  2. 噗��
  3. 呼傅
    • foo执行和调用栏
    • 柱线被执行

你可以像这样调用函数:

  (function($) {
     var namespace;
         namespace = {
                     something : function() {
                                             alert('hello there!');
                                            },
                      bodyInfo : function() {
                                             alert($('body').attr('id'));
                                            }
                     };
         window.ns = namespace;
    })(this.jQuery);
   $(function() {
              ns.something();
              ns.bodyInfo();
   });

在 JavaScript 中定义作用域的唯一内容是一个函数,所以你的问题不是范围问题。您很可能没有调用 foo(),而是在定义 blah() 之前调用它,或者您在某处遇到语法错误。也许您可以发布整个HTML页面,以便我们了解发生了什么。