《Javascript語言精粹》 讀書筆記

來源:互聯網
上載者:User

標籤:

1 6種值被當做假:false、null、undefined、Null 字元串‘‘、數字0、數字NaN,其他所有值都為真,包括"false"

2 typeof有6種值,分別是‘number‘,‘string‘,‘boolean‘,‘undefined‘,‘function‘,‘object‘;其中typeof(null),結果是‘object‘

3 如果第一個運算數的值為真,那麼運算子||產生它的第一個運算數的值.否則,它產生第二個運算數的值.如,可利用||運算子來填充預設值var status = flight.status || "unkonwn"

4 apply方法讓我們構建一個參數數組傳遞給調用函數,它允許我們選擇this的值。apply接受兩個參數,第一個是要綁定給this的值,第二個是參數數組
//構造一個包含兩個數位數組,並將它們相加
var array = [3, 4];
var sum = add.apply(null, array); //sum的值為7

5 異常處理

var add = function(a, b) {    if(typeof a !== ‘number‘ || typeof b !== ‘number‘) {        throw {           name: ‘TypeError‘,   message: ‘add needs numbers‘};     }     return a + b;}//構造一個try_it函數,以不正確的方式調用之前的add函數var try_it = function() {try {add("seven");} catch (e) {document.writeln(e.name + ‘:‘ + e.message);}}                

 

6 給Number.prototype增加一個integer方法,根據數位正負來判斷是使用Math.ceiling(向上取整)還是Math.floor(向下取整)

Number.method(‘integer‘, function() {return Math[this<0 ? ‘ceil‘ : ‘floor‘](this);});document.writeln((-10/3).integer()); //-3

 

7  移除字串首尾空白的方法

String.method(‘trim‘, function() {return this.replace(/^\s+|\s+$/g, ‘‘);//正則的意思是從頭開始匹配空白字元一次或多次,從最好開始匹配空白字元一次或多次});document.writeln(‘"‘ + "  neat   ".trim() + ‘"‘);

  

8 模組是一個提供介面卻隱藏狀態與實現的函數或對象,模組模式一般形式是:一個定義了私人變數和函數的函數;利用閉包建立可以訪問私人變數和函數的特權函數;最後返回這個特權函數,或者把他們儲存到一個可以訪問到的地方,使用模組模式可以摒棄全域變數的使用

String.method(‘deentityfity‘, function() {//字元實體表,它映射字元實體的名字到對應的字元var entity = {quot: ‘"‘,lt: ‘<‘,gt: ‘>‘};//返回deentityfity方法return function() {return this.replace(//&([^&;]+);/g, function(a, b) {//如果字串可以再映射表中找到就將其替換為映射表中的值var r = entity[b];return typeof r === ‘string‘ ? r : a;});};}());document.writeln(‘<">‘.deentityfity()); // <">

  

9 javascript缺少塊級範圍,所以,最好的做法是在函數體的頂部聲明函數中可能用到的變數

 

10 /^ $/i,我們用^和$來框定這個運算式,它指引這個Regex對文本中的所有字元進行匹配,如果省略了這個標識,那麼只要一個字串包含一個數字,這個Regex就進行匹配,但有了這些標識,只有當一個字串的內容僅為一個數位時候,它才會告訴我們,如果僅包含^, 它將匹配以一個數字開頭的字串,如果我們僅包含$, 則匹配以一個數字結尾的字串。

 

11 (?:...)?表示一個可選的非捕獲型分組

 

12 javascript中的糟粕

全域變數 :越少越好
範圍 :無塊級範圍,在每個函數開頭部分聲明所有變數
自動插入分號 :因此大括弧風格需使用埃及括弧
Unicode :javascript字元是16位的,只能覆蓋65535個字元
parseInt :增加第二個參數,明確進位,parseInt("08",10)
浮點數 :二進位浮點數不能正確的處理十進位小數,0.1+0.2不等於0.3,不過整數部分是精確的
NaN : typeof NaN === ‘number‘ //true; NaN === NaN //false;
對象 :因為原型鏈的存在,javascript對象永遠不會有真的Null 物件

《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.