为什么必须先包含一个外部js文件,然后再使用新的脚本标签调用任何functiont?
我正在测试代码:
test.html
<html>
<head>
</head>
<body>
<script src=test.js>test();</script>
</body>
</html>
test.js
function test(){
alert(1);
}
它不会显示警报弹出窗口。
但是当我在 body或head 中分别包含 test.js 时,代码如下:
test.html
<html>
<head>
</head>
<body>
<script src=test.js></script>
<script>test();</script>
</body>
</html>
它确实显示了一个弹出窗口。它与HTML解析器有关吗?我什至没有在浏览器控制台中显示ReferenceError,因此test有一个引用,但未执行。
答案 0 :(得分:0)
必须按顺序加载全局名称空间中的代码,以便必须首先定义执行的代码。
例如,如果a.js拥有...
var a = function() {
alert('a');
}
...并且b.js拥有...
a()
...那么您将不想在a.js之前包含b.js,否则a()将不可用。
对于
<script src=test.js></script>
<script>test();</script>
同样是这样:首先包含文件,然后运行其内容。
答案 1 :(得分:0)
发生这种情况的原因是,当您指定src属性时,您告诉浏览器不要在此标记内查找javascript,而是在外部标记内寻找