HTML <script> 標籤 (tag) - 執行 JavaScript 程式碼

<script> tag 是用來寫 JavaScript 的,你可以直接 (inline) 寫 JavaScript code 在 <sciprt> 裡面,或是用 <script> 來載入外部 JavaScript 程式檔案。

直接寫 JavaScript code 的用法例如:

<script>
function hello() {
  alert('hello world!');
}
</script>

如果是用來載入外部 JavaScript 檔案,則是使用 <script> 的 src 屬性 (attribute) 指定檔案位址 (URL),且標籤內容留空:

<script src="somescript.js"></script>

當瀏覽器執行到上面這一行 <script> 標籤時,會先暫停,等待 JavaScript 檔案下載完成後並執行檔案內容,才會再繼續往下執行其他的 HTML。

<script src=""> 還有兩個屬性 asyncdefer 可以使用,來讓 JavaScript 檔案可以非同步 (asynchronously) 載入及執行,意思就是瀏覽器不用等 JavaScript 檔案載入,可以先繼續往下執行其他 HTML。

asyncdefer 的用法略有不同:

  • async 是讓 JavaScript 檔案非同步載入後執行,但如果有多個 script 不保證執行的先後順序
  • defer 是讓 JavaScript 檔案非同步載入,並且等整份 HTML 文件解析完後才會執行,同時 defer 也會保證執行的先後順序是依照不同 script 的先後順序

用法例如:

<script async src="script-1.js"></script>
<script async src="script-2.js"></script>

還有一個屬性是 charset,用來說明外部檔案的編碼,因為現在大多編碼預設都是 UTF-8 所以也沒那麼常用到:

<script src="myscripts.js" charset="UTF-8"></script>