標籤:建構函式 float 不同的 arguments 進階程式設計 express point const iba
第一章 JavaScript簡介1.1 JavaScript簡史
略
1.2 JavaScript實現
雖然 JavaScript 和 ECMAScript 通常都被人們用來表達相同的含義,但 JavaScript 的含義卻比 ECMA-262 中規定的要多得多。一個完整的 JavaScript 實現應該由下列三個不同的部分組成:
? 核心(ECMAScript)
? 文件物件模型(DOM)
? 瀏覽器物件模型(BOM)
1.3 JavaScript版本
略
第二章 在HTML中使用JavaScript2.1 <script>元素
向HTML頁面中插入JavaScript的主要方法,就是使用<script>元素。
為了避免瀏覽器在呈現頁面時出現明顯的延遲,現代Web應用程式一般都把全部JavaScript引用放在<body>元素中頁面內容的後面。
2.2 內嵌程式碼與外部檔案
略
2.3 文檔模式
兩種文檔模式是:混雜模式和標準模式
2.4 <noscript>元素
略
第三章 基本概念
3.1 文法
1. 區分大小寫:ECMAScript中的一切(變數、函數名和操作符)都區分大小寫。
2. 注釋:ECMAScript使用C風格的注釋,包括單行注釋和塊級注釋。
3. strict 模式:strict 模式是為JavaScript定義了一種不同的解析與執行模型。要在整個指令碼中啟用strict 模式,可以在頂部添加如下代碼:
"usestrict";
3.2 關鍵字和保留字
略
3.3 變數
定義變數時要使用var操作符,後跟變數名(即一個標識符),如下所示:
var message;
省略var操作符時,會建立一個全域變數:
function test(){ message="hi"; //全域變數}test();alert(message); //"hi"
3.4 資料類型
ECMAScript中有5種單一資料型別(也稱為基礎資料型別 (Elementary Data Type)):Undefined、Null、Boolean、Number和String。還有1種複雜資料類型——Object,Object本質上是由一組無序的名值對組成的。
1. typeof操作符:
typeof是用來檢測給定變數的資料類型的一種手段。
2. Undefined類型:
Undefined類型只有一個值,即特殊的undefined。在使用var聲明變數但未對其加以初始化時,這個變數的值就是undefined。
3. Null類型:
Null類型是第二個只有一個值的資料類型,這個特殊的值是null。如果定義的變數準備在將來用於儲存對象,那麼最好將該變數初始化為null而不是其他值。
4. Boolean類型:
Boolean類型只有兩個字面值:true和false。這兩個值與數字值不是一回事,因此true不一定等於1,而false也不一定等於0。
要將一個值轉換為其對應的Boolean值,可以調用轉型函數Boolean()。
5. Number類型:
ECMAScript能夠表示的最小數值儲存在Number.MIN_VALUE中——在大多數瀏覽器中,這個值是5e-324;能夠表示的最大數值儲存在Number.MAX_VALUE中——在大多數瀏覽器中,這個值是1.7976931348623157e+308。
NaN是一個特殊的數值,isNaN()函數用於判斷一個值是否為數字,例如字串"10"或Boolean值。而任何不能被轉換為數值的值都會導致這個函數返回true。
有3個函數可以把非數值轉換為數值:Number()、parseInt()和parseFloat()。第一個函數,即轉型函數Number()可以用於任何資料類型,而另兩個函數則專門用於把字串轉換成數值。
6. String類型:
String類型用於表示由零或多個16位Unicode字元組成的字元序列,即字串。ECMAScript中的字串是不可變的,也就是說,字串一旦建立,它們的值就不能改變。
要把一個值轉換為一個字串有兩種方式。第一種是使用幾乎每個值都有的toString()方法,多數情況下,調用toString()方法不必傳遞參數。但是,在調用數值的toString()方法時,可以傳遞一個參數:輸出數值的基數。
第二種是使用轉型函數String(),這個函數能夠將任何類型的值轉換為字串。
7. Object類型:
ECMAScript 中的對象其實就是一組資料和功能的集合。對象可以通過執行 new 操作符後跟要建立的物件類型的名稱來建立。如下所示:
var o = new Object();
Object的每個執行個體都具有下列屬性和方法:
constructor:儲存著用於建立當前對象的函數。對於前面的例子而言,建構函式(constructor)就是Object()。
hasOwnProperty(propertyName):用於檢查給定的屬性在當前對象執行個體中(而不是在執行個體的原型中)是否存在。
isPrototypeOf(object):用於檢查傳入的對象是否是傳入對象的原型。
propertyIsEnumerable(propertyName):用於檢查給定的屬性是否能夠使用for-in語句來枚舉。
toLocaleString():返回對象的字串表示,該字串與執行環境的地區對應。
toString():返回對象的字串表示。
valueOf():返回對象的字串、數值或布爾值表示。通常與toString()方法的傳回值相同。
由於在ECMAScript中Object是所有對象的基礎,因此所有對象都具有這些基本的屬性和方法。
3.5 操作符
1. 如果一個運算元是字串,另一個運算元是數值,在比較相等性之前先將字串轉換為數值。
2. 如果一個運算元是對象,另一個運算元不是,則調用對象的valueOf()方法,用得到的基本類型值按照前面的規則進行比較;
3. 相等(==)全等(===):全等只在兩個運算元未經轉換就相等的情況下返回true。
var result1 = ("55" == 55); //true,因為轉換後相等var result2 = ("55" === 55); //false,因為不同的資料類型不相等
4. 條件操作符:
variable = boolean_expression ? true_value : false_value;
5. 賦值操作符:簡單的賦值操作符由等號(=)表示,其作用就是把右側的值賦給左側的變數,如下面的例子所示:
var num = 10;
3.6 語句
1. ECMAScript 5中不存在塊級範圍,在迴圈內部定義的變數也可以在外部存取到。
for (var i = 0; i < count; i++){}alert(i); //10
2. for-in 語句是一種精準的迭代語句,可以用來枚舉對象的屬性。
下面是一個樣本:
for (var propName in window) { document.write(propName);}
3. break 和 continue 語句用於在迴圈中精確地控制碼的執行。其中,break 語句會立即退出迴圈,強制繼續執行迴圈後面的語句。而 continue 語句雖然也是立即退出迴圈,但退出迴圈後會從迴圈的頂部繼續執行。
var num = 0;for (var i=1; i < 10; i++) { if (i % 5 == 0) { break; } num++;}alert(num); //4
4. break 和 continue 語句都可以與 label 語句聯合使用,從而傳回碼中特定的位置。這種聯合使用的情況多發生在迴圈嵌套的情況下,如下面的例子所示:
var num = 0;outermost: for (var i = 0; i < 10; i++) { for (var j = 0; j < 10; j++) { if (i == 5 && j == 5) { break outermost; } num++; } }alert(num); //55
5.
6.
7.
3.7 函數
參數:
ECMAScript 中的參數在內部是用一個數組來表示的。函數接收到的始終都是這個數組,而不關心數組中包含哪些參數,在函數體內可以通過 arguments 對象來訪問這個參數數組,從而擷取傳遞給函數的每一個參數。
arguments 對象只是與數組類似(它並不是 Array 的執行個體),因為可以使用方括弧文法訪問它的每一個元素(即第一個元素是 arguments[0],第二個元素是 argumetns[1],以此類推),使用 length 屬性來確定傳遞進來多少個參數。
重載:
ECMAScript 函數不能像傳統意義上那樣實現重載。如果在 ECMAScript中定義了兩個名字相同的函數,則該名字只屬於後定義的函數。
function addSomeNumber(num){ return num + 100;}function addSomeNumber(num) { return num + 200;}var result = addSomeNumber(100); //300
---恢複內容結束---
《Javascript進階程式設計》讀書筆記