我违反了一些javascript规则吗?

tad*_*ole 6 javascript

我有一个非常简单的HTML和JavaScript.

<html>
<body>
   <h1>Test function</h1>
   <p>Hello</p>
   <script>
      function goodbye() {
         document.write ("good bye");
      }   
      goodbye();
   </script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

结果显示Hello和good bye字符串.我将goodbye函数移动到它自己的文件"goodbye.js"所以我的第一个html现在看起来像这样

<html>
<body>
    <h1>Test function</h1>
    <p>Hello</p>
    <script src='goodbye.js'>
        goodbye();
    </script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

现在,如果我再次运行html,它只显示Hello.我没想到的是.发生了什么 ?

dfs*_*fsq 13

这就是W3C规范所说的:

该脚本可以在SCRIPT元素的内容内定义在外部文件中.如果未设置src属性,则用户代理必须将该元素的内容解释为脚本.如果src具有URI值,则用户代理必须忽略该元素的内容并通过URI检索脚本.

因此,正确的调用方法goodbye()script在第一个带有src属性的标签之后再添加一个标签.