Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.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
使用document.write时的Javascript顺序_Javascript - Fatal编程技术网

使用document.write时的Javascript顺序

使用document.write时的Javascript顺序,javascript,Javascript,我对javascript在特殊情况下的执行顺序表示怀疑,如下所示。 我的页面标题中包含的js文件(main.js)有时需要动态包含另一个js文件,如: document.write('<script src="userdata.js"></script>'); document.write(“”); 在第二个文件中定义了一个变量xmlFix 但是,如果我稍后在main.js中尝试引用此变量,它将失败。为什么?何时执行userdata.js?userdata.js将在当

我对javascript在特殊情况下的执行顺序表示怀疑,如下所示。 我的页面标题中包含的js文件(
main.js
)有时需要动态包含另一个js文件,如:

document.write('<script src="userdata.js"></script>');
document.write(“”);
在第二个文件中定义了一个变量
xmlFix

但是,如果我稍后在main.js中尝试引用此变量,它将失败。为什么?何时执行
userdata.js

userdata.js
将在当前脚本完成后执行。JavaScript确实按顺序运行,但您正在进行需要处理的DOM更改。

假设以下代码:

HTML: c、 js: 这些功能将按如下方式执行:

foo();
bar();
qux();
baz();
这是因为
a.js
需要完成执行,浏览器才能移动到下一个DOM元素,该元素将是
c.js
,然后是
b.js

如果需要
a.js
中的代码来使用
b.js
c.js
中定义的变量/函数,则需要在脚本执行完毕后使用回调。对于vanilla JS,向
窗口添加回调。onload
document.readystatechange
更简单、更一致,但后者性能更高


如果您使用的是jQuery库,通常会使用“document ready”(文档准备就绪)事件(应该是:
jQuery(function($){…code here…});

对于一些替代方法,谢谢,您回答了我的问题,预见了我的后续问题(“如果我在
main.js
?”之后已经包含了一个
b.js
”,并且也回答了这个问题,那该怎么办呢!
foo();
document.write('<script src="c.js"><\/script>');
bar();
baz();
qux();
foo();
bar();
qux();
baz();