官术网_书友最值得收藏!

2.1 數(shù)據(jù)類型

視頻講解

JavaScript的數(shù)據(jù)類型分為基本數(shù)據(jù)類型和復合數(shù)據(jù)類型。關于復合數(shù)據(jù)類型中的對象、數(shù)組和函數(shù)等,將在后面的章節(jié)進行介紹。在本節(jié)中,將詳細介紹JavaScript的基本數(shù)據(jù)類型。JavaScript的基本數(shù)據(jù)類型有數(shù)值型、字符串型、布爾型以及兩個特殊的數(shù)據(jù)類型。

2.1.1 數(shù)值型

數(shù)值型(number)是JavaScript中最基本的數(shù)據(jù)類型。JavaScript和其他程序設計語言(如C語言和Java)的不同之處在于,它并不區(qū)別整型數(shù)值和浮點型數(shù)值。在JavaScript中,所有的數(shù)值都是由浮點型表示的。JavaScript采用IEEE754標準定義的64位浮點格式表示數(shù)字,這意味著它能表示的最大值是1.7976931348623157e+308,最小值是5e-324。

當一個數(shù)字直接出現(xiàn)在JavaScript程序中時,我們稱它為數(shù)值直接量(numeric literal)。JavaScript支持數(shù)值直接量的形式有幾種,下面將對這幾種形式進行詳細介紹。

注意

在任何數(shù)值直接量前加負號(-)可以構(gòu)成它的負數(shù)。但是負號是一元求反運算符,它不是數(shù)值直接量語法的一部分。

1.十進制

在JavaScript程序中,十進制的整數(shù)是一個由0~9組成的數(shù)字序列。例如:

    0
    6
    -2
    100

JavaScript的數(shù)字格式允許精確地表示-900719925474092(-253)和900719925474092(253)之間的所有整數(shù)(包括-900719925474092(-253)和900719925474092(253))。但是使用超過這個范圍的整數(shù),就會失去尾數(shù)的精確性。需要注意的是,JavaScript中的某些整數(shù)運算是對32位的整數(shù)執(zhí)行的,它們的范圍從-2147483648(-231)到2147483647(231-1)。

2.八進制

盡管ECMAScript標準不支持八進制數(shù)據(jù),但是JavaScript的某些實現(xiàn)卻允許采用八進制(以8為基數(shù))格式的整型數(shù)據(jù)。八進制數(shù)據(jù)以數(shù)字0開頭,其后跟隨一個數(shù)字序列,這個序列中的每個數(shù)字都在0和7之間(包括0和7),例如:

    07
    0366

由于某些JavaScript實現(xiàn)支持八進制數(shù)據(jù),而有些則不支持,所以最好不要使用以0開頭的整型數(shù)據(jù),因為不知道某個JavaScript的實現(xiàn)是將其解釋為十進制,還是解釋為八進制。

3.十六進制

JavaScript不但能夠處理十進制的整型數(shù)據(jù),還能識別十六進制(以16為基數(shù))的數(shù)據(jù)。所謂十六進制數(shù)據(jù),是以“0X”或“0x”開頭,其后跟隨十六進制的數(shù)字序列。十六進制的數(shù)字可以是0到9中的某個數(shù)字,也可以是a(A)到f(F)中的某個字母,它們用來表示0到15之間(包括0和15)的某個值,下面是十六進制整型數(shù)據(jù)的例子:

    0xff
    0X123
    0xCAFE911

【例2.01】網(wǎng)頁中的顏色RGB代碼是以十六進制數(shù)字表示的。例如,在顏色代碼#6699FF中,十六進制數(shù)字66表示紅色部分的色值,十六進制數(shù)字99表示綠色部分的色值,十六進制數(shù)字FF表示藍色部分的色值。在頁面中分別輸出RGB顏色#6699FF的3種顏色的色值。代碼如下:(實例位置:資源包\源碼\02\2.01)

    01  <script type="text/javascript">
    02  document.write("RGB顏色#6699FF的3種顏色的色值分別為:");  //輸出字符串
    03  document.write("<p>R:"+0x66);                            //輸出紅色色值
    04  document.write("<br>G:"+0x99);                           //輸出綠色色值
    05  document.write("<br>B:"+0xFF);                           //輸出藍色色值
    06  </script>

執(zhí)行上面的代碼,運行結(jié)果如圖2.1所示。

圖2.1 輸出RGB顏色#6699FF的3種顏色的色值

4.浮點型數(shù)據(jù)

浮點型數(shù)據(jù)可以具有小數(shù)點,它的表示方法有以下兩種。

(1)傳統(tǒng)記數(shù)法

傳統(tǒng)記數(shù)法是將一個浮點數(shù)分為整數(shù)部分、小數(shù)點和小數(shù)部分,如果整數(shù)部分為0,可以省略整數(shù)部分。例如:

    1.2
    56.9963
    .236

(2)科學記數(shù)法

此外,還可以使用科學記數(shù)法表示浮點型數(shù)據(jù),即實數(shù)后跟隨字母e或E,后面加上一個帶正號或負號的整數(shù)指數(shù),其中正號可以省略。例如:

    6e+3
    3.12e11
    1.234E-12

說明

在科學記數(shù)法中,e(或E)后面的整數(shù)表示10的指數(shù)次冪,因此,這種記數(shù)法表示的數(shù)值等于前面的實數(shù)乘以10的指數(shù)次冪。

【例2.02】輸出“3e+6”“3.5e3”“1.236E-2”這3種不同形式的科學記數(shù)法表示的浮點數(shù),代碼如下:(實例位置:資源包\源碼\02\2.02)

    01  <script type="text/javascript">
    02  document.write("科學記數(shù)法表示的浮點數(shù)的輸出結(jié)果:");  //輸出字符串
    03  document.write("<p>");                                 //輸出段落標記
    04  document.write(3e+6);                                  //輸出浮點數(shù)
    05  document.write("<br>");                                //輸出換行標記
    06  document.write(3.5e3);                                 //輸出浮點數(shù)
    07  document.write("<br>");                                //輸出換行標記
    08  document.write(1.236E-2);                              //輸出浮點數(shù)
    09  </script>

執(zhí)行上面的代碼,運行結(jié)果如圖2.2所示。

圖2.2 輸出科學記數(shù)法表示的浮點數(shù)

5.特殊值Infinity

在JavaScript中有一個特殊的數(shù)值Infinity(無窮大),如果一個數(shù)值超出了JavaScript所能表示的最大值的范圍,JavaScript就會輸出Infinity;如果一個數(shù)值超出了JavaScript所能表示的最小值的范圍,JavaScript就會輸出-Infinity。例如:

    01  document.write(1/0);        //輸出1除以0的值
    02  document.write("<br>");     //輸出換行標記
    03  document.write(-1/0);       //輸出-1除以0的值

運行結(jié)果為:

    Infinity
    -Infinity
6.特殊值NaN

JavaScript中還有一個特殊的數(shù)值NaN(Not a Number的簡寫),即“非數(shù)字”。在進行數(shù)學運算時產(chǎn)生了未知的結(jié)果或錯誤,JavaScript就會返回NaN,它表示該數(shù)學運算的結(jié)果是一個非數(shù)字。例如,用0除以0的輸出結(jié)果就是NaN,代碼如下:

    alert(0/0);  //輸出0除以0的值

運行結(jié)果為:

    NaN
2.1.2 字符串型

字符串(string)是由0個或多個字符組成的序列,它可以包含大小寫字母、數(shù)字、標點符號或其他字符,也可以包含漢字。它是JavaScript用來表示文本的數(shù)據(jù)類型。程序中的字符串型數(shù)據(jù)是包含在單引號或雙引號中的,由單引號定界的字符串中可以含有雙引號,由雙引號定界的字符串中也可以含有單引號。

說明

空字符串不包含任何字符,也不包含任何空格,用一對引號表示,即""或''。

例如:

(1)單引號括起來的字符串,代碼如下:

    '你好JavaScript'
    'mingrisoft@mingrisoft.com'

(2)雙引號括起來的字符串,代碼如下:

    " "
    "你好JavaScript"

(3)單引號定界的字符串中可以含有雙引號,代碼如下:

    'abc"efg'
    '你好"JavaScript"'

(4)雙引號定界的字符串中可以含有單引號,代碼如下:

    "I'm legend"
    "You can call me 'Tom'!"

注意

包含字符串的引號必須匹配,如果字符串前面使用的是雙引號,那么在字符串后面也必須使用雙引號,反之都使用單引號。

有的時候,字符串中使用的引號會產(chǎn)生匹配混亂的問題。例如:

    "字符串是包含在單引號'或雙引號"中的"

對于這種情況,必須使用轉(zhuǎn)義字符。JavaScript中的轉(zhuǎn)義字符是“\”,通過轉(zhuǎn)義字符可以在字符串中添加不可顯示的特殊字符,或者防止引號匹配混亂的問題。例如,字符串中的單引號可以使用“\'”來代替,雙引號可以使用“\"”來代替。因此,上面一行代碼可以寫成如下的形式:

    "字符串是包含在單引號\'或雙引號\"中的"

JavaScript常用的轉(zhuǎn)義字符如表2.1所示。

表2.1 JavaScript常用的轉(zhuǎn)義字符

例如,在alert語句中使用轉(zhuǎn)義字符“\n”的代碼如下:

    alert("網(wǎng)頁設計基礎:\nHTML\nCSS\nJavaScript");  //輸出換行字符串

運行結(jié)果如圖2.3所示。

圖2.3 換行輸出字符串

由圖2.3可知,轉(zhuǎn)義字符“\n”在警告框中會產(chǎn)生換行,但是在“document.write();”語句中使用轉(zhuǎn)義字符時,只有將其放在格式化文本塊中才會起作用,所以腳本必須放在<pre>和</pre>的標簽內(nèi)。

例如,下面是應用轉(zhuǎn)義字符使字符串換行,程序代碼如下:

    01  document.write("<pre>");                       //輸出<pre>標記
    02  document.write("輕松學習\nJavaScript語言!");  //輸出換行字符串
    03  document.write("</pre>");                      //輸出</pre>標記

運行結(jié)果如圖2.4所示。

圖2.4 換行輸出字符串

如果上述代碼不使用<pre>和</pre>的標簽,則轉(zhuǎn)義字符不起作用,代碼如下:

    document.write("輕松學習\nJavaScript語言!");  //輸出字符串

運行結(jié)果為:

    輕松學習 JavaScript語言!

【例2.03】在<pre>和</pre>的標簽內(nèi)使用轉(zhuǎn)義字符,分別輸出前NBA球星奧尼爾的中文名、英文名以及別名,關鍵代碼如下:(實例位置:資源包\源碼\02\2.03)

    01  <script type="text/javascript">
    02  document.write('<pre>');         //輸出<pre>標記
    03  document.write('中文名:沙奎爾·奧尼爾');       //輸出奧尼爾中文名
    04  document.write('\n英文名:Shaquille O\'Neal');  //輸出奧尼爾英文名
    05  document.write('\n別名:大鯊魚');               //輸出奧尼爾別名
    06  document.write('</pre>');                       //輸出</pre>標記
    07  </script>

實例運行結(jié)果如圖2.5所示。

圖2.5 輸出奧尼爾的中文名、英文名和別名

由上面的實例可以看出,在單引號定義的字符串內(nèi)出現(xiàn)單引號,必須進行轉(zhuǎn)義才能正確輸出。

2.1.3 布爾型

數(shù)值數(shù)據(jù)類型和字符串數(shù)據(jù)類型的值都無窮多,但是布爾數(shù)據(jù)類型只有兩個值,一個是true(真),一個是false(假),它說明了某個事物是真還是假。

布爾值通常在JavaScript程序中用來作為比較所得的結(jié)果。例如:

    n==1

這行代碼測試了變量n的值是否和數(shù)值1相等。如果相等,比較的結(jié)果就是布爾值true,否則結(jié)果就是false。

布爾值通常用于JavaScript的控制結(jié)構(gòu)。例如,JavaScript的if/else語句就是在布爾值為true時執(zhí)行一個動作,而在布爾值為false時執(zhí)行另一個動作。通常將一個創(chuàng)建布爾值與使用這個比較的語句結(jié)合在一起。例如:

    01  if (n==1)   //如果n的值等于1
    02      m=m+1;  //m的值加1
    03  else
    04      n=n+1;  //n的值加1

本段代碼檢測n是否等于1。如果相等,就給m的值加1,否則給n的值加1。

有時候可以把兩個可能的布爾值看作是on(true)和off(false),或者看作是yes(true)和no(false),這樣比將它們看作是true和false更為直觀。有時候把它們看作是1(true)和0(false)會更加有用(實際上JavaScript確實是這樣做的,在必要時會將true轉(zhuǎn)換成1,將false轉(zhuǎn)換成0)。

2.1.4 特殊數(shù)據(jù)類型
1.未定義值

未定義值就是undefined,表示變量還沒有賦值(如“var a;”)。

2.空值(null)

JavaScript中的關鍵字null是一個特殊的值,它表示為空值,用于定義空的或不存在的引用。這里必須要注意的是,null不等同于空的字符串("")或0。當使用對象進行編程時可能會用到這個值。

由此可見,null與undefined的區(qū)別是,null表示一個變量被賦予了一個空值,而undefined則表示該變量尚未被賦值。

主站蜘蛛池模板: 手机| 鄂托克旗| 西平县| 微博| 普洱| 邻水| 深州市| 泾阳县| 湾仔区| 麻江县| 松江区| 宜君县| 岳阳市| 怀宁县| 呼图壁县| 中江县| 黎城县| 莱西市| 赫章县| 榆树市| 阳信县| 林芝县| 固安县| 吴江市| 南雄市| 金阳县| 钟祥市| 广元市| 筠连县| 个旧市| 西乡县| 镇康县| 文昌市| 雷波县| 鲁山县| 松江区| 博乐市| 同仁县| 通海县| 思茅市| 康平县|