1. 程式人生 > >javascript權威指南--學習筆記

javascript權威指南--學習筆記

-一、JavaScript基本資料型別

1、數字--Number類

2、字串--String類

3、布林--Boolean類

4、函式Function

5、物件Object

6、陣列Array

7、null

8、undefined

備註:    當一個未定義的值用於布林環境,他就會轉為false,用於數字環境就會轉為0 ,用於字串環境就會轉為undefined

 

二、JavaScript物件類

1、日期和時間 Date

 

三、資料型別轉化

將數字轉化我字串

(1)數字用在一個字串表示式中,就會先轉為字串,所以要將一個數字轉為字串直接加加一個空字串就可以。

      var n = 100 ; n = n + " " ; //typeof n ===string

 (2)使用String函式, n = String(n);

 (3)使用toString方法 , n = n.toString();

將字串轉化為數字

 (1)當字串在運算環境中,則會自動轉化為數字。如 var t = "23" * "2" .// 46 ,

         所以我們可以利用這一點,將一個字串直接減去 0 var t = "23" - 0; 注意,字串加0會導致字串連線,

         而不是轉化資料型別。

  (2)使用Number函式 var number = Number(“23”),

  (3)使用parseInt或者parseFloat會去掉非數字部分,轉為整型和浮點型。不能把制定的字串轉為陣列,如parseFloat("$33.99")//輸出NaN

          parseInt甚至可以用另一個引數來解析數字的引數,合法值再2-36之間。parseInt('11',2) //輸出3,1*2 +1

  布林型別的轉換

  ECMAScript指出,如果一個字串以“0”開頭的話,parseInt會將它解析為八進位制或者10進位制,存在不確定性,所以,不要用parseInt去解析“0”

  開頭的字串。除非parseInt(“09898”,10)顯示指出。

   (1)如果一個布林值用在數字環境中,true轉為1,false轉為 0;如果一個布林值用在字串環境中,true轉為true,false轉為false,空值和未定義轉為false,否則轉為true

   (2)使用Boolean(x) //true或者false

 

四、基本資料型別的包裝物件

 eval()方法對待string字串和string物件是不一樣的,如果無意間傳遞給他一個string物件,那麼可能無法像預期那樣子工作。

 object()函式,任何的數字,字串,布林值都可以轉化為對應的包裝物件

 物件轉化為其他物件。valueOf

傳值:當一個數據被操作,就是複製一份這個資料放在變數中,提供函式或者方法取使用,如果一旦這個函式或者方法

改變了這個資料,那也只是改變了函式的這個拷貝值的值,對原先的值不會有影響。 

這個就是基礎資料型別:數字(number),布林(boolean)、字串(string)

傳址:當這個資料被操作,被操作的只有這個資料的引用(地址),如果以傳址方式進行,那麼變數儲存的是該值的地址,

複製傳遞的都是這個地址。在傳址時只是這個地址被複制一份,而不是該值,如果通過一個地址(如函式引數變數)改變了該值,

那麼這個值就被改變了。

這個是引用型別資料:物件Object ,陣列(Array)、函式(Function)

 

五、運算子

算術運算子

(1)加號運算子 + :可以進行算術運算,也可以進行字串拼接。字串和數字相加那麼直接變成字串,數字和陣列、物件相加變成字串。

              var s = 100 ;var obj = {name : 'beryl'};var array = [1,3]var t = s + obj;console.log(typeof t)//string型別

         + 運算子做運算任何都會轉為數字或者字串。

(2)減號運算子 -:二元操作,兩個都是數字的值可以使用- 運算子進行減法,但是如果其中一個不是數字, - 就會將其轉化為 數字

(3)乘法運算子 * :同減號

(4)除法運算子 / :二元操作,任何的數字/0 結果都是NaN

(5)模運算子 %:取餘數,5%2  為1

(6)一元減法運算子 - :-1,取反

(7)一元加法運算子+:+1000,+"string"//NaN

(8)遞增運算子++:該運算子只能是變數或者陣列一個元素或者物件的一個屬性。++i,i++通常用在迴圈中

(9)遞減運算子--

(10)相等運算子 == :寬鬆檢測,

(11)等同運算子 === :嚴格檢測

var s1 ;
console.log(s1 === undefined )//true
等同的判定方法:
1、如果兩個值型別不同,那他們就不等同。
2、如果兩個值有其中一個是NaN(包括它本身),那麼這兩個值一定不等同。

(12) in 運算子 。in左邊要是字串或者可以被轉為字串,右邊是物件或者陣列。左邊如果有在物件裡面,返回true,否則返回false。

           “x” in {x:1,y:2} // true

(13)instanceof運算子。iinstanceof左邊是物件,右邊是物件的類,如果物件屬於這個物件的類,返回true,否則,返回false。

          var d = new Date(); d instanceof Date  //true

         如果instanceof右邊不是一個建構函式,而是一個物件(String,Number),返回false。

         d instanceof Stirng//返回false

(14)邏輯非運算子

(15)位運算子 >>  ,>>>

(16)賦值運算子 =

(17)條件運算子。x>y?x+y :-x+y;

(18)typeof運算子。數字、字串、布林值——返回 number、string、boolean

          陣列,物件(String,Number,Boolean包裝物件),null返回object

(19)物件建立運算子。

(20)函式運算子()

六、語句

(1)表示式語句

(2)if語句。else if 語句。

(3)switch語句。

       switch(表示式){

    case 1:

      break;

    case ‘number’:

      break;

    case 60*60*24:

      break;

    case Math.PI:

      break;

    case n+1://case後面跟表示式

      break;

    case a[0]:

      break;

    default:

      break;

    }

(4)while語句

(5)for語句

(6)default語句:可以退出最內層的迴圈和switch語句 default;

(7)continue語句:用於開始迴圈的新迭代。continue;只能用於while ,do while ,for , for in中

(8)var語句,生命變數的語句,變數提升,可以作為for迴圈的一部分。

(9)function語句。

(10)return 語句。return只能出現在函式中,作為函式的返回值,也可以return ;終止函式。

(11)throw語句。throw語句就是丟擲一個異常,就是用訊號通知發生了錯誤或者異常。

   try塊中,錯誤以下的部分都不會被知行。

   catch異常,捕捉異常,就是知道異常了,然後就要處理他。catch塊只有在有錯誤的時候,才會被知行。

(12)finally 語句。只要執行try塊語句,finally塊語句都會被執行。通常使用者try從句程式碼後,用於清除的操作,

  如果try快中遇到return break continue時,那麼再轉移到新的目的地錢,finally快都會被執行。

(13)with語句。with語句用於修改暫時修改作用域鏈。

總結: