javascript允許使用3種基礎資料型別 (Elementary Data Type)-數字、文本字元和布爾值。此外,它還支援2種小資料類型null(空)和underfined,它們各只定義了一個值。除了這些基本的資料類型外,javascript還支援符合資料類型-對象(object)。javascript還定義了另外一種特殊的對象-函數(function)。除了函數和數組外,javascript語言核心還定義了其他一些專用的對象。這些對象表示不是新的資料類型,而是對象的新的類(class)。Date類定義的是表示日期的對象,RegExp類類定義的是表示正則的運算式對象,Error類定義的是表示javascript程式中發生的語法錯誤對象。
數字
javascript的數字類型不區別整形數值和浮點型資料。(64位浮點數)
6.02e23 //6.02*10的23次方
1.4738E-32 //1.4738223*10的負32次方
javascript是使用語言自身提供的算術運算子來進行數字運算的。這些運算包括(+、-、*、/)
javascript還使用了一些特殊的數值
Infinity 表示無窮大的特殊值
NaN 特殊的非數字值
Number.Max_VALUE 表示最大的數字
Number.Min_VALUE 表示最小的數字
Number.NaN 特殊的非數字值
Number.POSITIVE_INFINITY 表示正無窮大的特殊值
Number.NEGATIVE_INFINITY 表示負無窮大的特殊值
字串
字串(sting)就是由單引號或雙引號括起來的Unicode字元序列,其中含有0個或多個Unicode字元。由單引號定界的字串中可以含有雙引號,由雙引號定界的字串中也可以含有單引號。(如果需要在字串中添加分行符號,可以使用/n)
<a href="contact.html" onclick="alert('test')">1</a> <a href="contact.html" onclick='alert("test")'>2</a>
msg="Hello",+"world";//"Hello,world"
要確定一個字串的長度,s.length
要擷取字串最後一個字元。last_char=s.charAt(s.length-1)
可以從字串中抽出第二、三、四個字元。sub=s.substing(1,4)
要從字串中尋找第一個字母“a”的位置 i=s.indexOf('a');
把數字轉換為字串
如果一個數字用在一字串串連運算式中,數字就會轉換成字串:var n=100;var s =n+"";
或者var string_value=string(number); string_value.toSting();
var n=17
binary_string =n.toSring(2);//2進位 10001
octal_string =n.toSring(8);//8進位 021
hex_string =n.toSring(16);//16進位 0x11
toFixed()把一個數字轉化為字串,並且顯示小數點後的指定位元。toExponential()使用指數的方法把一個數字轉化為字串。toPrecision()使用指定的有意義的位元來顯示儀個數字,如果有意義的位元還不夠顯示整個整數部分,它就使用指數的表示方法(這3個方法都會四捨五入)
var n=123456.789
n.toFixed(0); //123456.789
n.toFixed(2); //123456.79
n.toExponential(1);//1.2e+5
n.toExponential(3);//1.235e+5
n.toPrecision(4);//1.235e+5
n.toPrecision(7);//123456.8
把字串轉換為數字
當一個字串用於數字環境中,它也會自動轉換為一個數字。 var product="21"*"2";
利用這一優點,我們只要把一個字串減去0就可以將其轉換為一個數字 var number ="21"-0;
var number =Number("21");這種方法麻煩之處它過於嚴格。它只對10為基數的數字有效,在緊隨數位字串中,它不允許出現任何非Null 字元。要允許更多靈活的轉化,可以使用parseInt()和parseFloat()。parseInt()只截取整數。而parseFloat()截取整數和浮點數
parseInt("3 is int "); //3
parseInt("12.34 is int "); //12
parseInt("0xff"); //255
parseFloat("3.14 is float") // 3.14
parseInt("11",2); //3 parseInt()還可以指定多一個參數來解析數位基數
但parseInt()和parseFloat()不能把指定的字串轉換為數字,它就會返回NaN
parseInt("one"); //NaN
parseFloat("$72.47"); //NaN
布爾值
布爾值資料就只有2個值,這2個合法的值分別由直接量true和false表示。
布爾值很容易轉換,如果一個布爾值用在數值環境中,true就轉換為1,而false就會轉換為數字0,如果在字串環境中,true就轉換為字串“true”,而false就轉換為字串“false”。如果一個數字用在一本該布爾值的地方,那麼這個數字是0或NaN,它就會轉換為false,否則就會為true.如果字串用在用布爾值的地方,那麼Null 字元串就轉化為false,否則就轉換為true。空值或未定義的值也會轉換為false,而任何的非Null 物件,數組或函數都轉換為true。
var x=Boolern(x);
var x= !!1;
函數
函數(function)是一個可執行檔javascript程式碼片段,由javascript程式定義或由javascript實現預定義。雖然函數只定義一次,但是javascript程式卻可以多次執行或調用它。javascript的函數可以帶有實質參數或形式參數,用於指定這個函數執行計算要使用一個或多個值,而且它還能返回一個值。
javascript可以定義和調用函數,代碼如下
function sum(x) { return x + x; } alert(sum(2).toString());
在很多的語言中,函數只是語言的文法特性,它可以被定義,被調用,但是不是資料類型。但javascript中的函數式真正的數值,這一點給語言帶來了很大的靈活性。這意味值函數可以被儲存在變數、數組和對象中,而且函數還可以作為參數傳遞給其他函數。這是非常有用的
函數直接量是使用關鍵字function後加可選的函數名、用括弧括起來的函數體定義的。
var sum = function (x) { return x + x }; alert(sum(1).toString());
對象
對象object是已命名資料的集合。這些已命名的資料通常被作為對象屬性來引用。要引用一個對象的屬性,就必須引用這個對象,在其後加實心點和屬性名稱。如document.write("this a test!");或者document.body.firstChild
建立對象,對象是通過調用特殊的特殊的建構函式建立的。
var o =new Object();
var now =new Date();
var pattern =new RegExp("\sjava\\s","i");
一旦建立了屬於自己的對象,那麼就可以根據自己的意願設計並使用它的屬性了:
var point= new object()
point.x =2.3;
pont.y =1.2;
javascript定義了對象直接量的文法,從而能夠建立對象並定義它的屬性。
var pont={x:2.3,y:-1.2}
對象直接量也可以嵌套;
var aaa={bbb:{x:2,y:2},ccc:{x:4,y:4}};
最後要說明的是,對象直接量中使用的屬性值不必是常量,它可以是任意的javascript運算式。另外,對象直接量中的屬性名稱可以是字串而不是標識符:
var user = { "username": "andy",
"age": 20,
"info": { "tel": "123456", "cellphone": "98765" },
"address":
[
{ "city": "beijing", "postcode": "222333" },
{ "city": "newyork", "postcode": "555666" }
]
}
這不是Jason嗎
數組
數組(array)和對象一樣是數值的集合。所不同的是,對象中的每個數值都有一個名字,而數組的沒一個數字,或者是下標(index)。
document.images[1].width
要注意,javascript並不支援多維陣列,不過它的數組元素還可以是數組。由於javascript是以中非類型語言,因此數組元素不必具有相同的類型。
可以是用建構函式Array()來建立數組。一旦建立了數組,就可以輕鬆地給數組任何元素賦值:
var a =new Array();
a[0]=1.2;
a[1]="Javascript"
a[2]=true;
a[3]={x:1,y:3}
數組直接量是在一個封閉方括弧中的序列,序列中的元素由逗號分隔。括弧內的值將被依次賦值給數組元素,下標值從0開始。
var a=[1.2 ,"Javascript",true,{x:1,y:3}];
與對象直接量一樣,數組也可以被嵌套:
var martrix =[[1,2,3],[4,5,6],[7,8,9]];
而且與對象相同,數組元素中的元素不必僅限於常量,它可以是任意運算式
var base=1024;
var table =[base,base+1,base+2,base+3];
數組直接量中還可以存放沒定義元素,只要在逗號之間去掉該元素的值就可以
var a=[1.2 ,,,{x:1,y:3}];//有2個元素沒定義的;
null
javascript的關鍵字null是一個特殊的值,它表示“無值”。null常常被看做物件類型的一個特殊值,代表“無對象”的值。null是一個獨一無二的值,有別於其他所有的值。如果一個變數的值為null,那麼就說明它的值不是有效對象、數組、數字、字串和布爾值。當null用於布爾環境,它轉換為false。當它用於數字環境,它轉換為0.當它用於一個字串環境,它轉換為“null”.
underfined
在使用一個並沒聲明的變數時,或者使用已經聲明但沒賦值的變數時,又或者使用一個並不存在的對象屬性時,返回underfined。雖然underfined和null值不同,但是==運算卻將兩者相等。
當沒定義的值用於布爾環境,它會轉換為false:用於一個數字環境,它會轉換為NaN。當用於字串環境,它會轉換為“undefined”。