包含外部js文件并在外部js文件中调用函数不适用于相同的脚本标签

时间:2019-06-14 06:53:57

标签: javascript html dom

为什么必须先包含一个外部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有一个引用,但未执行。

2 个答案:

答案 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,而是在外部标记内寻找