第一章 JavaScript的簡介
第二章 在HTML中使用JavaScript
把JavaScript插入到HTML頁面中要使用<script>元素。使用這個元素可以把JavaScript嵌入到HTML頁面中,讓腳本與標記混合在一起;也可以包含外部的JavaScript文件。而我們需要注意的地方有:
- 在包含外部JavaScript文件時,必須將src屬性設(shè)置為指向相應(yīng)文件的URL。而這個文件既可以是與包含它的頁面位于同一個服務(wù)器上的文件,也可以是其他域中的文件。
- 所有<script>元素都會按照它們在頁面中出現(xiàn)的先后順序依次被解析。在不適用defer和async屬性的情況下,只有在解析完前面的<script>元素中的代碼之后,才會開始解析后面<script>元素中的代碼。
- 由于瀏覽器會先解析完不適用defer屬性的<script>元素中的代碼,然后再解析后面的內(nèi)容,所以一般把<script>元素放在頁面最后。
- 使用defer屬性可以讓腳本在文檔完全呈現(xiàn)出來之后再執(zhí)行。延遲腳本總是按照指定它們的順序執(zhí)行。
- 使用async屬性可以表示當前腳本不必等待其他腳本,也不必阻塞文檔呈現(xiàn)。不能保證異步腳本按照它們在頁面中出現(xiàn)的順序執(zhí)行。
- 使用<noscript>元素可以指定在不支持腳本的瀏覽器中顯示的替代內(nèi)容。但在啟動腳本的情況下,瀏覽器不會顯示<noscript>元素中的任何內(nèi)容。
第三章 基本概念
3.1 語法

語法.png
3.3 變量
ECMAScript的變量是松散類型的,所謂松散類型就是可以用來保存任何類型的數(shù)據(jù)。定義變量使要使用var操作符。因此可以修改變量值的同時修改值得類型
例如:
var message = "hi";
message = 100; //有效,但不推薦
有一點必須注意,即用var操作符定義的變量將成為定義該變量的作用域中的局部變量。
3.4 數(shù)據(jù)類型

數(shù)據(jù)類型.png
3.5 操作符

操作符.png
3.6 語句
3.6.1 if語句
3.6.2 do-while語句
3.6.3 while語句
3.6.4 for語句
3.6.5 for-in語句
- for-in語句是一種精準的迭代語句,可以用來枚舉對象的屬性。
- 通過for-in循環(huán)輸出的屬性名的順序是不可預測的。建議在使用for-in循環(huán)之前,先檢測確認該對象的值不是null或undefined。
3.6.6 label語句
3.6.7 break和continue語句
3.6.8 with語句
- 作用是將代碼的作用域設(shè)置到一個特定的對象中,簡化多次編寫同一個對象的工作。
- 嚴格模式下不允許使用with語句
3.6.9 switch語句
3.7 函數(shù)
- ECMAScript中沒有函數(shù)簽名的概念,因為其函數(shù)參數(shù)是以一個包含零或多個值的數(shù)組的形式傳遞的。
- 可以向ECMAScript函數(shù)傳遞任意數(shù)量的參數(shù),并且可以通過arguments對象來訪問這些參數(shù)。
- 由于不存在函數(shù)簽名的特性,ECMAScript函數(shù)不能重載。
第四章 變量、作用域和內(nèi)存問題
4.1 基本類型和引用類型的值
- 動態(tài)的屬性:只能給引用類型值動態(tài)地添加屬性,以便將來使用。
- 復制變量值:基本類型值和引用類型值得區(qū)別。
- 參數(shù)的傳遞:ECMAScript中所有函數(shù)的參數(shù)都是按值傳遞的。
- 檢測類型:用typeof檢測對象只會返回"object",所以提供了instanceof操作符,其語法如下:
result = variable instanceof constructor
如果引用類型是Object,返回true;
4.2 執(zhí)行環(huán)境以及作用域

執(zhí)行.jpg
var color = "blue";
function changeColor() {
var anotherColor = "red";
function swapColors() {
var tempColor = anotherColor;
anotherColor = color;
color = tempColor;
}
swapColors();
}
changeColor();
這個例子的作用域鏈為

QQ圖片20170124110547.jpg
- 可以通過try-catch語句的catch塊 和 with語句來延長作用域鏈
- javascript沒有塊級作用域,對于塊級作用域的語言來說,for語句初始化變量的表達式所定義的變量,只會存在于循環(huán)的環(huán)境之中。而對于javascript來說,由for語句創(chuàng)建的變量i即使在for循環(huán)執(zhí)行結(jié)束后,也依舊會存在于循環(huán)外部的執(zhí)行環(huán)境。