Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过$(文档)传递范围。准备好了吗_Javascript_Jquery_Html - Fatal编程技术网

Javascript 通过$(文档)传递范围。准备好了吗

Javascript 通过$(文档)传递范围。准备好了吗,javascript,jquery,html,Javascript,Jquery,Html,有人能给我解释一下为什么这不起作用,并告诉我如何使它起作用吗?我试图创建一个名称空间和IIFEs函数,但似乎无法实现 $(document).ready(function() { alert (hi); }); $(document).ready(function() { var hi = "hello" }); 谢谢大家! 执行此操作时: $(document).ready(function() { var hi = "hello" }); 您正在创建一个名为hi的变量,该变

有人能给我解释一下为什么这不起作用,并告诉我如何使它起作用吗?我试图创建一个名称空间和IIFEs函数,但似乎无法实现

$(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()
回调将在尝试使用该值的第二个回调之前首先调用。

执行此操作时:

$(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()
回调将在尝试使用该值的第二个回调之前首先调用