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

2.1 數據類型

視頻講解

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

2.1.1 數值型

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

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

注意

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

1.十進制

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

    0
    6
    -2
    100

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

2.八進制

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

    07
    0366

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

3.十六進制

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

    0xff
    0X123
    0xCAFE911

【例2.01】網頁中的顏色RGB代碼是以十六進制數字表示的。例如,在顏色代碼#6699FF中,十六進制數字66表示紅色部分的色值,十六進制數字99表示綠色部分的色值,十六進制數字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>

執行上面的代碼,運行結果如圖2.1所示。

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

4.浮點型數據

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

(1)傳統記數法

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

    1.2
    56.9963
    .236

(2)科學記數法

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

    6e+3
    3.12e11
    1.234E-12

說明

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

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

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

執行上面的代碼,運行結果如圖2.2所示。

圖2.2 輸出科學記數法表示的浮點數

5.特殊值Infinity

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

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

運行結果為:

    Infinity
    -Infinity
6.特殊值NaN

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

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

運行結果為:

    NaN
2.1.2 字符串型

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

說明

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

例如:

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

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

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

    " "
    "你好JavaScript"

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

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

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

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

注意

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

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

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

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

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

JavaScript常用的轉義字符如表2.1所示。

表2.1 JavaScript常用的轉義字符

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

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

運行結果如圖2.3所示。

圖2.3 換行輸出字符串

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

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

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

運行結果如圖2.4所示。

圖2.4 換行輸出字符串

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

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

運行結果為:

    輕松學習 JavaScript語言!

【例2.03】在<pre>和</pre>的標簽內使用轉義字符,分別輸出前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>

實例運行結果如圖2.5所示。

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

由上面的實例可以看出,在單引號定義的字符串內出現單引號,必須進行轉義才能正確輸出。

2.1.3 布爾型

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

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

    n==1

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

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

    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轉換成1,將false轉換成0)。

2.1.4 特殊數據類型
1.未定義值

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

2.空值(null)

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

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

主站蜘蛛池模板: 屏山县| 和平区| 德钦县| 广灵县| 固阳县| 象山县| 双鸭山市| 诸暨市| 遂昌县| 达拉特旗| 江都市| 彰化市| 田阳县| 安义县| 富锦市| 社旗县| 扎鲁特旗| 琼结县| 贵州省| 宜春市| 黎平县| 绥化市| 利津县| 陇川县| 黑河市| 芜湖市| 璧山县| 九江市| 冕宁县| 绥芬河市| 峡江县| 商丘市| 丰城市| 周至县| 景洪市| 武宣县| 德江县| 米易县| 柘城县| 湖口县| 新余市|