《Javascript高級程序設計》學習記錄(一)

最近又開始從新閱讀《javascript高級程序設計》了,記憶中這是第三次了,可是前面都是蜻蜓點水式的過了,此次仍是須要好好整理和實踐一番了。javascript

 

雖然是一些基礎概念,可是仍是有好多容易注意的地方,不知道它的玄機還有這麼多,特在此記錄一下,防止本身忘記,同時也能增長本身的理解java

(1)javascript中共有5種簡單的數據類型:Undefined,Null,Boolean,Number,String,一種複雜的數據類型Object函數

 

(2)typeof操做符spa

 在javascript中,typeof和instanceof是兩個很值得講的點,要記住typeof不是函數而僅僅是簡單的操做符,其中有兩點須要注意:設計

  1:typeof(null)返回的是Object,由於null被認爲是一個空的對象引用 對象

  2:typeof(function)會返回functionip

 

(3)對於null和undefined值,它們有不少共同點:內存

  1:在對它們進行相等操做符的時候:alert(null == undefined)時返回的是true,字符串

  2:Null和Undefined數據類型都只有一個值,分別就是null和undefinedit

  3:undefined和null在對它們進行Boolean()強制類型轉換的時候,返回的都是false

  4:null和undefined都沒有toString()函數。

 

 (4)在進行Boolean()強制類型轉換的時候,false,"",0,NaN,null,undefined都會轉換爲false,其餘的都會轉換爲true

 

 (5)Number類型

    1:因爲保存浮點數值須要的內存空間是整數數值的兩倍,因此js會自動將浮點數轉化爲整數類型(若是能夠的話)

    2:js在進行浮點運算的時候會出現精度太低的bug,致使0.1+0.2以後獲得的不是0.3,因此在進行浮點運算的時候要格外當心

    3:一旦某一次運算出現了+Infinity或者-Infinity,那麼該值將沒法繼續擦參與下一次的計算,由於Infinity是不能參與運算的

4:對於NaN來講,任何設計NaN的操做都會返回NaN,NaN和任何值都不相等,包括自身,因此在執行下面的操做的時候,返回的將是false:

Alert(NaN==NaN);

5:Number()能夠將任何數據類型轉爲數值類型,而parseInt和parseFloat只能將字符串轉化爲數值類型

對於Number來講,

Number(null);返回0   Number(「」)返回0

Number(undefined)返回 NaN

對於parseInt來講,

parseInt(「」); 返回NaN

parseInt能夠轉化8進制和16進制的值,可是在ECMAScript5中,parseInt沒有轉化8進制的能力了

對於parseFloat來講,它只能解析十進制的數值,因此他沒有用第二參數指定基數的用法

(6)邏輯與和邏輯或操做

 與:1:當第一個操做數是對象,則返回第二個操做數

     2:當兩個操做數都是對象的時候,則返回第二個操做數

     3:若是有一個NaN操做數,則返回null,

     4:若是有一個操做數是undefined,則返回的是undefined

則執行下面的操做的時候,返回的是2

Alert(1.&&2);

或:1:當第一個操做數是對象的時候,返回的是第一個操做數

2:當兩個操做數都是對象的時候,返回的是第一個操做數

    3:若是有一個NaN操做數,則返回null,

4:若是有一個操做數是undefined,則返回的是undefined

則執行下面的操做的時候,返回的是1

Alert(1||2);

 

(7)加減乘除運算符

  乘:1:Infinity和0相乘的時候,結果爲NaN

      2:Infinity和非0數值相乘,返回的是Infinity

除:  1:若是是零被零除,結果是NaN  

      2:Infinity被Infinity除,結果是NaN

加: 1:Infinity和-Infinity相加,結果爲NaN 

     2:+0和-0相加,結果爲+0

     

減 1:-Infinity和Infinity相減,結果爲NaN

(8)在一個函數中,位於return語句以後的任何代碼都永遠不會執行

(9)Js中沒有函數的重載,即便兩個函數定義爲相同,後面的那一個永遠會覆蓋前面的那一個

相關文章
相關標籤/搜索