1. 程式人生 > >JavaScript 資料型別和值

JavaScript 資料型別和值

  程式是通過操作值來執行的。用來表示並操作的值的型別成為資料型別。JavaScript包括三種基本資料型別——數字、文字字串和布林值,還支援兩種小資料型別null(空)和undefined(未定義)。
  此外,JavaScript還支援符合資料型別——物件。物件是值的集合。有序集合(陣列)、函式(function)和已命名的無序集合都是物件。除此之外,JavaScript還定義了一些專用物件類(class),如表示日期的Date物件類,表示正則表示式的RegExp物件類,表示語法和執行時錯誤的Error物件類。

  數字:
  JavaScript不同於其他語言的一個特點是它不區分整型數值和浮點型數值,所有的數字都由浮點型表示。它採用IEEE754標準定義的64位浮點格式表示數字。
  JavaScript支援十進位制、十六進位制和八進位制數值直接量。需要注意的是ECMAScript標準不支援八進位制直接量,而且不是所有的JavaScript都支援八進位制數值,所以在程式中要儘量避免八進位制直接量的使用。
  在JavaScript中採用了大量的算術函式,來支援複雜的算術運算,這些函式都被儲存在Math物件中,作為Math物件的屬性使用。
---------------------------------------------------------------------------------------------
  Math物件——核心參考手冊和其後列表
  數字的 toString()方法:toString()方法可以用它的引數指定的基數或底數(底數必須在2和36之間)把數字轉換成字串。
---------------------------------------------------------------------------------------------
  JavaScript中還定義了一些特殊的數值來表達特殊情況下的資料的值。
   Infinity                 表示無窮大的特殊值
   NaN                  特殊的非數字值
   Number.MAX_VALUE           可表示的最大數字
   Number.MIN_VALUE            可表示的最小數字(與零最接近的數字)
   Number.NaN              特殊的非數字值
   Number.POSITIVE_INFINITY      表示正無窮大的特殊值
   Number.NEGATIVE_INFINITY     表示負無窮大的特殊值
    JavaScript還定義了函式isNaN()用來檢測NaN值,isFinite()來檢測一個數字是否是Nan、或正無窮大或負無窮大。

  字串:
  JavaScript中的字串包含在單引號或雙引號中,在JavaScript中沒有char字元型別,而是用長度為1的字串來表示字元。
  在JavaScript中,我們還可以使用轉義序列把Unicode字元新增到字串直接量中,這對於不支援完整Unicode字符集的地方非常有用。
  我們在使用字串的時候,可能會遇到字串本身包含了單引號或雙引號的情況,這是就需要用到JavaScript中定義的轉義字元加單引號或雙引號來表示,如“/'”或“/"”。JavaScript的轉義序列有:
     /0           NUL字元(/u0000)
     /b            退格符(/u0008)
     /t            水平製表符(/u0009)
     /n            換行符(/u000A)
     /v            垂直製表符(/u000B)
     /f              換頁符(/u000C)
     /r             回車符(/u000D)
     /"             雙引號(/u0022)
     /'             單引號或撇號(/u0027)
     //             反斜槓(/u005C)
     /xXX     由兩位十六進位制數值XX指定的Latin-1字元
     /uXXXX    由四位十六進位制數XXXX指定的Unicode字元
     /XXX     由一位到三位八進位制數(1到377)指定的Latin-1字元。ECMAScript不支援。
  同Java語言一樣,JavaScript用(+)號連線多個字串。
  JavaScript的字串和陣列一樣從0開始索引。
------------------------------------------------------------------------------------------------------------------------------------------------
  對字串的屬性和方法,length、charAt()、substring()、indexOf()等,參考核心參考手冊的String物件和其後列表
------------------------------------------------------------------------------------------------------------------------------------------------

  布林值:
  true和false,常用於JavaScript的控制結構。

  函式:
     函式(function)是一個可執行的JavaScript程式碼段,包括使用者自定義函式和JavaScript預定義函式。
  JavaScript函式相對於其它語言的一個重要特性是,JavaScript中的函式是一個真正的資料型別,這就意味著函式可以被儲存在變數、陣列和物件中,還可以作為引數傳遞個其它函式。
  我們在定義函式時,除了用傳統的:
  function name(param,){ …… }
  還可以用JavaScript特有的函式直接量的方法,這在某些高階指令碼中非常有用:
  var name = function(param,){ …… }

  物件:
  有著面嚮物件語言基礎的程式設計師來說,一定知道物件就是資料的集合。JavaScript中的物件,其屬性包括了儲存在其中的變數和函式方法。這些屬性都可以通過物件來呼叫(非常類似於Java)。
  JavaScript中的物件可以作為關聯陣列使用,因為它們能夠將任意的資料值和任意的字串關聯起來。如果採用這種方式使用物件,訪問物件的方法要使用一個由方括號封閉起來的、包含所需屬性名的字串。如訪問image物件的width和height屬性:iamge["width"];image["height"]
  ECMAScript v3定義了物件直接量的語法,使你能夠建立物件並定義它的屬性。物件直接量由一個由花括號中的列表構成,這個列表的元素是用冒號分隔的屬性/值對,元素之間用逗號隔開。
  如定義一個point物件:
    var point={x:2.3,y=1.3}
  物件直接量也可以巢狀,如:
    var rectangle = {upperleft:{x:2,y:2},lowerright:{x:4,y:4}}
  其中屬性值不必是常量,也可以是任意的JavaScript表示式。

  陣列:
  JavaScript中,要獲得陣列中的值,可以使用陣列名,加上用方括號封閉起來的下標值。陣列的下標從0開始。(這些都和Java陣列一樣)陣列可以存放任何一種JavaScript資料型別,包括其它陣列、物件或函式的引用。由於JavaScript是一種無型別語言,因此陣列元素不必具有相同的資料型別。
  陣列的建立方法如下:
  var a = new Array();  
  a[0] = 1.2;
  a[1] = "JavaScript";
  a[2] = true;
  a[3] = {x:1,y:3};
  var b = new Array(1.2,"JavaScript",true,{x:1,y:3});
  var c = new Array(4);
  陣列直接量的定義與物件直接量定義類似,也可以巢狀,其屬性值不必是常量:
  var d = [1.2,"JavaScript",true,{x:1,y:3}];
  而且陣列直接量中還可以存放未定義的元素:
  var e = [1,,,,5];