那么JavaScript程序應(yīng)該寫(xiě)在哪里呢?腳本程序應(yīng)該用\<script\>...\</script\>包圍。多數(shù)情況下,被放置在\<head\>...\</head\>中。下面的例子讓瀏覽器彈出警示框:
```html
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>歡迎來(lái)訪</title>
<script type="text/javascript">
"use strict";
alert("Hello world!");
</script>
</head>
<body>
<p>顯示完消息框后,這部分才被解析呈現(xiàn)出來(lái)。</p >
</body>
</html>
```
瀏覽器自上而下逐行加載網(wǎng)頁(yè)。當(dāng)解析到\<script\>...\</script\>標(biāo)簽時(shí),瀏覽器知道這里邊是要運(yùn)行的程序了。程序的最前面是`"use strict";`,其實(shí)這一行不算是程序代碼,而應(yīng)該叫做**預(yù)處理指令**。這句話告訴解釋器要“以嚴(yán)格模式運(yùn)行后面的程序”。因?yàn)镴avaScript的誕生和發(fā)展具有太多的隨意性。在早期階段,JavaScript幾乎沒(méi)有什么規(guī)范可言。各大瀏覽器廠商都按照自己的想法去實(shí)現(xiàn)JavaScript,就連微軟也在IE中實(shí)現(xiàn)了自己的JScript(可以理解為JavaScript的高仿版)。這導(dǎo)致同樣一句代碼在不同瀏覽器中產(chǎn)生的行為是不相同的。人們覺(jué)得這種局面有必要加以糾正,于是便提出了**嚴(yán)格模式**。在嚴(yán)格模式中,那些不確定的行為都得到了處理,而且某些不安全的操作也會(huì)拋出錯(cuò)誤。我們后面討論的所有內(nèi)容,都是在嚴(yán)格模式中的。所以,你需要做的就是始終保證你所寫(xiě)的程序的最前面有一行`"use strict";`。
瀏覽器繼續(xù)向下加載,讀到`alert("Hello world!");`這一句后就立即運(yùn)行。這句話是一個(gè)**函數(shù)調(diào)用**,還記得高中數(shù)學(xué)中的三角函數(shù)嗎?例如$sin(π)$就是一次函數(shù)調(diào)用。其中$sin$是函數(shù)名,后面跟一對(duì)兒小括號(hào),小括號(hào)里面是函數(shù)的參數(shù)$π$。$sin(π)$的調(diào)用返回值應(yīng)該是0。與此類似,本例中的`alert`是函數(shù)名,并以`"Hello world!"`作為參數(shù)進(jìn)行了調(diào)用。雖然調(diào)用后產(chǎn)生的函數(shù)值沒(méi)什么大用,但是該函數(shù)的“副作用”卻很重要,那就是彈出警示框,而警示框中顯示的信息正是那個(gè)參數(shù)“Hello world!”。用戶單擊“確定”按鈕關(guān)閉警示框后,瀏覽器繼續(xù)加載下文,\<body\>...\</body\>中的內(nèi)容才被解析呈現(xiàn)出來(lái)。這就是我們寫(xiě)的第一個(gè)JavaScript程序。需要特別注意的是,HTML語(yǔ)言是不分大小寫(xiě)的。你寫(xiě)\<p\>還是\<P\>都是可以的。不過(guò)最新版本的HTML語(yǔ)言建議我們統(tǒng)統(tǒng)使用小寫(xiě)。而JavaScript語(yǔ)言是區(qū)分大小寫(xiě)的,`alert`和`Alert`被認(rèn)定是兩個(gè)不同的標(biāo)志。彈出“警示框”的函數(shù)名就是小寫(xiě)的alert,這不是建議而是強(qiáng)制。如果你不慎寫(xiě)成了`Alert("Hello world!");`是不會(huì)起作用的(嚴(yán)格說(shuō)是錯(cuò)誤)。另外,每個(gè)語(yǔ)句結(jié)尾處的分號(hào)不是必需的,但是使用分號(hào)被認(rèn)為是良好的編程習(xí)慣。
- 序言
- 第01章 網(wǎng)頁(yè)從哪里來(lái)
- 第02章 JavaScript的由來(lái)
- 第03章 JavaScript與Java的區(qū)別
- 第04章 網(wǎng)頁(yè)文件長(zhǎng)什么樣
- 第05章 寫(xiě)一個(gè)Hello World程序
- 第06章 基本類型與變量
- 第07章 函數(shù)
- 第08章 對(duì)象與引用類型
- 第09章 函數(shù)的上下文
- 第10章 對(duì)象的構(gòu)造函數(shù)
- 第11章 包裝類
- 第12章 自動(dòng)類型轉(zhuǎn)換
- 第13章 控制結(jié)構(gòu)
- 第14章 Array類型
- 第15章 外部JS文件
- 第16章 重要的DOM
- 第17章 Node.js一撇
- 第18章 JS正在觸及的領(lǐng)域