《Javascript進階程式設計》讀書筆記

來源:互聯網
上載者:User

標籤:建構函式   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進階程式設計》讀書筆記

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.