有人可以向我解释为什么这不起作用并告诉我如何使它起作用吗?我尝试过创建命名空间和 IIFE 函数,但我似乎无法得到它。
$(document).ready(function() {
alert (hi);
});
$(document).ready(function() {
var hi = "hello"
});
谢谢!
最佳答案
当你这样做时:
$(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);
});
这将确保设置 hi
值的第一个 $(document).ready()
回调将在您尝试的第二个回调之前首先调用使用该值。
关于javascript - 通过 $(document).ready 传递范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36927321/