html - script 标签之间的 JavaScript 函数作用域
我有两个不同的 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
它们都是全局的。它们可以互相看到。问题出现在它们被定义并互相调用的时候。
你应该按照这个顺序定义并调用它们:
- 酒吧
- 福
调用 foo
- foo 已执行并调用了 bar
- bar 被执行
答案#2
你可以这样调用函数:
(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();
});
