有人可以向我解释为什么这不起作用并向我展示如何使其发挥作用?我尝试过创建命名空间和IIFE函数,但我似乎无法得到它。
$(document).ready(function() {
alert (hi);
});
$(document).ready(function() {
var hi = "hello"
});
谢谢!
答案 0 :(得分:4)
执行此操作时:
$(document).ready(function() {
var hi = "hello"
});
您正在创建一个名为hi
的变量,该变量是该回调函数的本地变量。在该功能之外根本无法访问它。这是该语言的一个特色。
您可以在更高的范围内声明变量,如下所示:
var hi;
$(document).ready(function() {
hi = "hello"
});
然后,该变量的值将在范围之外可用,但您不一定知道它何时获得正确的值,因为您不知道何时调用$(document).ready()
回调,除非您放置回调中的代码。
尝试在两次调用$(document).ready()
之间共享变量真的没什么意义。将代码放在同一个$(document).ready()
回调函数中
$(document).ready(function() {
var hi = "hello"
alert (hi);
});
不推荐
如果您打算尝试在两次调用$(document).ready()
之间共享变量(我不建议这样做,因为它会使您的代码有些脆弱),可以完成。 $(document).ready()
的回调将按照附加顺序进行调用,因此您必须妥善订购:
var hi;
$(document).ready(function() {
hi = "hello"
});
$(document).ready(function() {
alert (hi);
});
这将确保设置$(document).ready()
值的第一个hi
回调首先在您尝试使用该值的第二个回调之前调用。