<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                計算機程序的唯一任務就是處理數據。從性質上來看,數據又分為很多種類型。比如描述你此刻的心情的一串文字,再比如描述地球到月球距離的一個數字。我們在這兩種數據上所施加的操作是完全不同的。我們可能對前者“有感情的朗讀”,卻讓后者“參與一個物理公式的計算”。所以我們說它們本質上是不同種類的數據,有必要區別對待。JavaScript語言把數據分成4中基本類型,它們是string(字符串)、number(數字)、boolean(布爾)和undefined(未定義)。請注意,它們的名稱都是小寫單詞。接下來我們逐一討論。 ## (1)string 所謂字符,就是一個符號。可以是英文字母,例如大寫字母H;可以是數字形式的符號,例如字符9;可以是各種標點符號,也可以是#、\*、@、!、{、$等等,中文、日文、俄文等等各種民族語言的符號也都算在內。為了表達某種特定含義,我們通常把許多這樣的符號連成一長串,比如“banana”代表現實世界中的一種水果。在計算機中,我們把字符連成的長串叫做**字符串**。在上文中我們讓警示框打印了一句“Hello world!”,這就是一個字符串。它由12個字符組成,其中包含10個英文字母、1個空格和1個感嘆號。因此,我們說這個字符串的長度是12。JavaScript語言不會單獨存儲字符,它只處理字符串。字符串需要用雙引號包圍,哪怕是一個字符構成的字符串也應如此。我們把雙引號稱為字符串的**定界符**。如果你要輸出中文,同樣也需要使用雙引號包圍,例如"你好,世界!"。需要注意的是,在中文符號中也有全角的雙引號,全角的雙引號屬于漢字。而英文中的半角雙引號才能當做定界符,千萬不要搞混淆。你可以試著運行下面的程序,彈出一個警示框: ```javascript alert("JavaScript的世界不香嗎?"); ``` 在這里,我隱去了暫不討論的部分。不過你要時刻保證代碼被放在\<script\>...\</script\>標簽中的,并且第一行是嚴格模式的聲明。其實,JavaScript也允許使用英文單引號作為字符串的定界符,這可能會使輸出雙引號或者單引號時稍微方便一些。看下面的例子: ```javascript alert("JavaScript的世界不'香'嗎?"); //JavaScript的世界不'香'嗎? alert('JavaScript的世界不"香"嗎?'); //JavaScript的世界不"香"嗎? ``` 此外,還有一種特殊的字符串,就是我們常說的**空串**。空串不包含任何字符,也就是說它的長度為0。如果我們想讓警示框輸出一個空串,就寫成下面的樣子: ```javascript alert(""); //兩個雙引號緊緊貼在一起 ``` ## (2)number 數字類型和數學中的差不多,不需要多講,大家都很熟悉。例如5、4.2、-3.1、0等等,這些都是數字類型的常量。所謂**常量**,就是不會變化的量,是多少就寫多少,是5就寫5,是2就寫2。我們可以寫一些常量表達式,并用alert()函數輸出它們的結果,例如: ```javascript alert(5); //5 alert(5/2); //2.5,正斜杠(/)是除法操作符 ``` 我們還可以用標識符來代替數字。早在中學數學中,我們就曾經用字母代替數字進行計算,美其名曰“代數”,例如我們經常用英文字母$x$代替某個可能變化的物理量。在程序中,我們把這些代替具體值的標識符稱作**變量**。在嚴格模式下,變量必須先聲明再使用,其目的是為了避免由于程序員筆誤而導致意外發生。看下面的例子: ```javascript var n; //在嚴格模式下聲明是必須的 n=5; alert(n/2); //2.5 alert(m/2); //出錯 ``` 在第1行中,我們用關鍵字var聲明了標識符n,也就是明確地告知解釋程序“在后面的程序中,n要作為變量來使用,請做好準備”。在第2行中,我們把常量5存放到n中。這叫做給變量n**賦值**。從此,n的值是5。第3行計算n除以2的商,并用警示框輸出。第4行中,由于上文并沒有聲明標識符m,所以程序出錯。在瀏覽器中按<kbd>F12</kbd>按鈕,然后切換到Console(控制臺)選項卡,可以在這里找到錯誤報告。在計算機的底層數據表示中,一個變量其實就是內存的一小塊區域,給變量賦值的過程,實際上就是把數據寫入到這塊內存區域中。JavaScript允許在聲明變量的同時給變量賦值,像下面那樣: ```javascript var n=5; var m=n; n=8; alert(m/2); //2.5 ``` 上面代碼第2行中,我們把n的值傳給變量m。第3行n的值發生變化,但不會影響到m,兩者代表內存中相互獨立的區域。使用變量編程,可以讓我們專心于運算法則,僅從形式上實現這一法則。而變量中具體的值是多少,則取決于程序運行時輸入的數據。我們把這種用程序實現的運算法則叫做**算法**。我們現在可以寫一個簡單的算法小例子——通過給定的半徑求圓面積。首先,我們來熟悉一下prompt()函數。alert()函數只是彈出警告,而prompt()函數不僅彈出提示,還要求用戶輸入信息。現在,我們用prompt()函數實現互動,要求用戶輸入圓的半徑。用戶輸入完畢點擊“確定”按鈕,程序再用alert()輸出圓的面積。 ```javascript var radius; radius=prompt("請輸入圓的半徑:"); alert(3.14*radius*radius); //星號是乘法操作符 ``` 第2行,程序會彈出一個消息框并要求用戶輸入圓的半徑。假設用戶輸入5,然后單擊“確定”按鈕,prompt()函數會將用戶輸入的5作為返回值,再通過賦值語句將這個返回值傳送給變量radius。此時,radius中是數字5。第3行通過radius計算圓的面積并顯示。 在JavaScript中,數字類型中還有兩個很特殊的值,一個叫**Infinity**,意思是“無窮大”,另一個叫**NaN**,意思是“非數字(Not A Number)”。當你用5去除以0時,就會得到一個Infinity值: ```javascript alert(5/0); //Infinity ``` 說來倒也不稀奇,Infinity可以帶正負。正無窮大就是Infinity,而負無窮大就是-Infinity。表達式-5/0的結果就是-Infinity。如果說Infinity值是一個數字類型,或許還比較容易令人接受。但是NaN值也是數字類型,似乎就有些匪夷所思。你可以直接輸出這個常量,例如`alert(NaN);`,不過這么做沒多大意義。常見的情況是在計算中得到一個無法描述的數字。比如想把4開算術平方根,得到的是數字2。但是,如果你把-4開平方,就會得到一個NaN值。再如,對一個完全沒有數字形式的字符串強行進行了一次數學運算,也不會得到一個有意義的數字。看下面的例子: ```javascript alert("China"/2); //NaN ``` 世界上永遠只有一個中國,任何企圖將中國一分為二的想法都注定會失敗。記住,雖然NaN值的含義是“非數字”,但它仍然是數字類型。 ## (3)boolean 電燈有兩種狀態,要么亮,要么滅;人的性別有兩種狀態,要么男,要么女;門要么開,要么關;我們所處的時間要么是白天,要么是夜晚;一句話要么是事實,要么是謊言。現實世界里幾乎所有事件都可以根據某種規則描述成相互對立的兩種狀態。為了在程序中描述這種對立的狀態,我們定義了布爾類型的數據。布爾類型數據只有兩個值,要么是true,要么是false。我們用前者描述肯定的、正確的、陽性的狀態,用后者描述否定的、錯誤的、陰性的狀態。我們可以單獨輸出一個布爾類型的常量: ```javascript alert(true); //true ``` 但大多數情況下,我們是通過對表達式進行計算從而得到一個布爾類型的結果。例如,3+7的和大于12嗎?這個命題成立嗎?換句話說,`3+7>12`這個算式成立嗎?我們可以讓程序來回答這個問題: ```javascript alert(3+7>12); //false,說明這個判斷不成立 ``` 布爾類型有自己的運算法則,相對于數字的**算術運算**而言,布爾類型的運算被稱為**邏輯運算**。 * 邏輯非:將操作數映射為對立面(非真則假,非假則真); | 表達式 | 結果 | | :-----: | :---: | | ! false | true | | ! true | false | - 邏輯與:兩個操作數必須同時為真結果才為真,否則為假; | 表達式 | 結果 | | :------------: | :---: | | false && false | false | | false && true | false | | true && false | false | | true && true | true | * 邏輯或:兩個操作數中至少有一者為真結果為真,否則為假; | 表達式 | 結果 | | :--------------: | :---: | | false \|\| false | false | | false \|\| true | true | | true \|\| false | true | | true \|\| true | true | JavaScript語言是一種腳本語言,JavaScript的邏輯運算其實是一種選擇運算,我們在后文會詳細介紹。 ## (4)undefined 在JavaScript語言中,變量可以存儲任何類型的數據,也可以在使用變量的過程中隨時改變數據類型。我們可以用運算符typeof來查看一個變量(或常量)的數據類型。沒錯,typeof是運算符,所以把它放在變量(或常量)的前面即可,不需要加小括號。看下面的例子: ```javascript var a; a="5"; alert(typeof a); //string a=5; alert(typeof a); //number a=true alert(typeof a); //boolean ``` 可是,一個變量在聲明之后賦值之前,它里邊是什么數據?又是什么類型呢?看下面的例子: ```javascript var a; //聲明了變量a,尚未對其賦值 alert(a); //undefined alert(typeof a); //undefined ``` 第2、3行的輸出結果都是undefined(未定義)。第2行輸出的是變量的值,第3行輸出的是數據的類型名,兩者拼寫是一模一樣的。也就是說,屬于undefined類型的數據只有一個值,它就是undefined。我們完全可以給一個變量賦undefined值,就像可以給變量賦NaN值、Infinity值一樣: ```javascript var a=Infinity; alert(typeof a); //number a=NaN; alert(typeof a); //number a=undefined; alert(typeof a); //undefined ``` 這里需要特別說明一點,進行typeof運算之后得到的結果是一個字符串。比如`typeof 5`的運算結果事實上是字符串"number"。想想下面的例子輸出的是什么: ```javascript var a; alert(typeof typeof a); ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看