《Javascript语言精粹》 读书笔记
1 6種值被當做假:false、null、undefined、空字符串''、數字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 模塊是一個提供接口卻隱藏狀態(tài)與實現的函數或對象,模塊模式一般形式是:一個定義了私有變量和函數的函數;利用閉包創(chuàng)建可以訪問私有變量和函數的特權函數;最后返回這個特權函數,或者把他們保存到一個可以訪問到的地方,使用模塊模式可以摒棄全局變量的使用
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,我們用^和$來框定這個表達式,它指引這個正則表達式對文本中的所有字符進行匹配,如果省略了這個標識,那么只要一個字符串包含一個數字,這個正則表達式就進行匹配,但有了這些標識,只有當一個字符串的內容僅為一個數字的時候,它才會告訴我們,如果僅包含^, 它將匹配以一個數字開頭的字符串,如果我們僅包含$, 則匹配以一個數字結尾的字符串。
?
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對象永遠不會有真的空對象
轉載于:https://www.cnblogs.com/elexiang/p/4743581.html
總結
以上是生活随笔為你收集整理的《Javascript语言精粹》 读书笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GATT之Device informat
- 下一篇: Xamarin Android 所见即所