《Javascript高級程序設計》讀書筆記——ECMAScript基礎(2)

題:轉換:

1. 轉換成字符串:toString()方法

    Number的toString()方法有重載,可以指定轉換成的字符串是二進制,八進制等等
2. 轉換成數字:parseInt()和parseFloat()參數必須是字符串否則返回NaN
    ❑parseInt()->從第一個字符開始檢索字符串直到已經不是數字
        var iNum1 = parseInt(“1234blue”); //returns 1234
        var iNum2 = parseInt(“0xA”); //returns 10有前導0x的默認以16進制轉換
        var iNum3 = parseInt(“22.5”); //returns 22
        var iNum4 = parseInt(“blue”); //returns NaN
        var i1 = parseInt(“010”); //returns 8有前導0的默認以八進制轉換
        var i2 = parseInt(“010”, 8); //returns 8
        var i3 = parseInt(“010”, 10); //returns 10
    ❑parseFloat()類似parseInt的方式檢索浮點數,不同點:字符串必須以十進制表示浮點數。
        var fNum1 = parseFloat(“1234blue”); //returns 1234.0
        var fNum2 = parseFloat(“0xA”); //returns NaN只能十進制
        var fNum3 = parseFloat(“22.5”); //returns 22.5
        var f4 = parseFloat(“22.34.5”); //returns 22.34第一個小數點有效
        var fNum5 = parseFloat(“0908”); //returns 908十進制
        var fNum6 = parseFloat(“blue”); //returns NaN
主題:強制類型轉換:
    ❑ Boolean(value) –如果value是空字符串,數字0,unefined,null返回false,否則true
    ❑ Number(value) –類似parseInt和parseFloat,不過要轉換整個字符串!

        Number(false) 0;

        Number(true) 1

        Number(undefined) NaN;

        Number(null) 0;

        Number(“5.5”) 5.5;

        Number(“56”) 56;

        Number(“5.6.7”) NaN;

        Number(new Object()) NaN;

        Number(100) 100

    ❑ String(value) – 調用value的toString方法。對null和undefined返回相應字符串不會出錯
        var s1 = String(null); //”null”
        var oNull = null; var s2 = oNull.toString();//出錯,未初始化
主題:引用類型:
1. 實例化:var o = new Object();沒有參數時括號不是必需的,但是最好使用括號
2. Object類:
   ❑屬性:
     constructor對創建對象的函數的引用:
       var date = new Date();
       if(date.constructor==Date)alert(“it is a date”);//return “it is a date”
        prototype對該對象的對象原型的引用(實現繼承)
   ❑方法:
     hasOwnProperty(property)判斷對象是否具有某個特定的屬性,參數用字符串指定
     isPrototypeOf(object)判斷對象是否爲另一對象的原型
     propertyIsEnumerable(String property) : Boolean屬性是否可用for。。。in語句枚舉
    toString() : String返回原始字符串表示
    valueOf() : Object返回最合適該對象的原始值實現從對象到原始值的轉換
3. Boolean類:
     var ofalse = new Boolean(false);
     var bff = ofalse && true;// output true布爾表達式運算中對象被轉換成true
     儘量避免使用Boolean對象
4. Number類
    ❑方法:
      valueof()返回原始值
      toString(radix) : String返回字符串,radix(2~36)指定數制
      toFixed([Number digits]) : String返回有digits個小數的字符串形式
      toExponential([Number digits]) : String返回有digits個小數的科學計數法的字符串形式
      toPrecision([Number precision]) : String返回最有意義的形式,precision指定小數位數
    ❑注意:toFixed,toExponential,toPrecision方法都會進行舍入操作,以便用正確的小數位數正確地表示一個數。儘量避免直接使用Number類的對象
5. String類
    ❑屬性:
      length : Number字符串長度
    ❑方法:
     charAt(index) : String如果index越界返回空字符串
     charCodeAt( index) : Number返回指定索引的字符代碼
     concat(String string2...stringN) : String返回新串,原串不變
     indexOf(String searchValue, [String fromIndex]) : Number從字符串的開頭(位置0)開始檢索子串
     lastIndexOf(String searchValue, [String fromIndex]) : Number從字符串的結尾開始檢索子串
     localeCompare(String target) : Number比較
     slice(beginSlice, endSlice) : String取子串,參數爲負數的時候表示從字符串最後開始
     substring(Number indexA, [Number indexB]) : String取子串,參數爲負數是做0處理,並且把兩個參數中較小的做起始位
     substr(Number start, Number length) : String取子串,參數爲負數時從結尾開始
主題:運算符:
1.delete:刪除自定義的對象屬性,數組元素
2.void:對任何值都返回undefined
3.位運算符:
   所有整數字面量都默認存儲爲有符號整數。只有用ECMAScript的位運算符才能創建無符號整數。
   ~按位非,結果爲:數字求負再減一
    &與,|或,^異或,<<左移,>>有符號右移,>>>無符號右移(對於負數將其看作無符號 數,通常都很大)
4. Boolean運算符
 邏輯NOT(!):

      如果運算數是對象,返回false;

      如果運算數是數字0,返回true;

      如果運算數是0以外的任何數字,返回false; 如果運算數是null,返回true;

      如果運算數是NaN,返回true;

      如果運算數是undefined,發生錯誤。

      var oFalse = new Boolean(false); alert(!oFalse);//return false,對象返回false
 邏輯AND運算符(&&)
    如果第一個操作數未定義過,出錯
    否則如果第一個操作數是false,返回false
    否則如果第一個操作數是null/undefined/NaN/0返回null/undefined/NaN/0
    否則如果第二個操作數未定義,出錯
    否則返回第二個操作數
 邏輯OR運算符(||)
    如果第一個操作數未定義過,出錯
    否則如果第一個操作數是true,返回true
    否則如果第二個操作數未定義過,出錯
    否則返回第一個操作數不在null/undefined/NaN/false/0中,返回第一個操作數
    否則返回第二個操作數即第一個操作數是null/undefined/NaN/false/0時返回第二個操作數
5.乘性運算符
 乘法運算符
 如果兩個運算符都是數字,正常運算
 如果某個運算數是NaN,結果爲NaN
 Infinity*0結果爲NaN
 Infinity*0以外數字結果爲Infinity,符號由第二個運算符的符號表示
 Infinity*Infinity結果爲Infinity
 除法運算符(/)
 如果運算數都是數字,執行常規的除法運算
 如果某個運算數是NaN,結果爲NaN。
 Infinity被Infinity除,結果爲NaN。
 Infinity被任何數字除,結果爲Infinity。
 0除一個非無窮大的數字,結果爲NaN。
 Infinity被0以外的任何數字除,結果爲Infinity或-Infinity,由第二個運算數的符號決定。
 取模運算符(%)
 如果運算數都是數字,執行常規的算術,返回除法運算得到的餘數。
 如果被除數是Infinity,或者除數是0,結果爲NaN。
 Infinity被Infinity除,結果爲NaN。
 如果除數是無窮大的數,結果爲被除數。
 如果被除數爲0,結果爲0。
5.加性運算符
 加法運算符(+)
 如果運算數都是數字,執行常規的算術
 如果有一個運算數是字符串,則把另一個轉換成字符串,返回連接後的字符串
 某個運算數是NaN,結果爲NaN。
 Infinity加Infinity,結果爲Infinity。
 -Infinity加-Infinity,結果爲-Infinity。
 Infinity加-Infinity,結果爲NaN。
 +0加+0,結果爲+0。
 -0加+0,結果爲+0。
 -0加-0,結果爲-0
 減法運算符(-)
 如果運算數都是數字,執行常規的算術
 某個運算數是NaN,結果爲NaN。
 Infinity減Infinity,結果爲NaN。
 -Infinity減-Infinity,結果爲NaN。
 Infinity減-Infinity,結果爲Infinity。
 -Infinity減Infinity,結果爲-Infinity。
 +0減+0,結果爲+0。
 -0減-0,結果爲+0。
 -0減+0,結果爲-0。
 某個運算數不是數字,結果爲NaN。
6.關係運算符(>,<,<=,>=)
 如果兩個都是字符串,按照其字符代碼進行比較小寫字母在大寫字母之前
 如果有一個數字,先把字符串轉換成數字再比較
 如果有一個是NaN返回false
7.等性運算符(==,!=,===,!==)
 ==,!=
 如果一個運算數是Boolean值,將false轉換爲0,true轉換爲1
 如果一個是字符串,一個是數字,把字符串轉換成數字
 如果一個是對象,一個是字符串,將對象轉換成字符串
 如果一個是對象,一個是數字,把對象轉換成數字
 null和undefined相等
 null和undefined不做轉換
 如果有一個NaN,不相等
 如果都是對象,比較兩者的引用值,指向同一對象則相等
 ===,!==:不進行類型轉換,直接進行比較
主題: 語句:
1. if語句,do-while語句,while語句
2. for語句:for(var i = 0;i < 10; i++){};alert(i);//output 10i在循環之外仍可以使用
3. for-in語句:用於枚舉對象的屬性,對於數組枚舉的是索引!
4. 語句可以加標籤
5. break,continue,支持標籤
6. with語句-不要使用!
7. switch語句:switch可用於字符串,case情況可以使用變量
主題: 函數:
1. 無重載:
可以用同一個名字在同一個作用域中定義多個函數,但只有最後一個起作用
2. arguments對象(Function類的屬性):模擬重載
3. Function類:函數是對象
 Function構造函數:不要使用
var function_name = new Function(argument1, argument2,..,argumentN, function_body);最後一個參數是字符串形式的函數體,前面函數的參數
 屬性
 length:函數定義是聲明的參數個數
 valueof和toString默認返回函數的源碼


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章