資料和判定是所有“智能”程式的基礎。在這章的開始,我們先看一下JavaScript是如何了解、或表示資料的。這個很重要,因為JavaScript包含許多資料類型(data types),而且根據它的資料類型來操作資料。錯誤的使用不同的資料類型會導緻意想不到的結果。我們來看一些常見的資料類型問題,你會明白如何把資料的類型轉化成其他的。
我們也會學習條件語句(conditional statements)和循環(loops):兩種最有價值的判定工具。為了在計算機語言中進行判定,我們需要讓程式知道響應特定的情況應該發生什麼,這就需要條件語句來解決。另一方面,循環允許你簡單的重複某一動作直到特定的條件被滿足。舉例來說,你可能需要循環表單裡的每個輸入以檢查它包含的資訊是否合法。
我會在這章中從如下許多方面闡述JavaScript:
l 在JavaScript中進行分類和操作:資料類型和資料運算符
l 變量
l 資料類型轉換
l 資料對象簡介:String、Date和Math對象
l 數組:儲存有順序的資料集合,例如一個購物車中的商品
l 使用條件語句、循環和指派進行判定
n 注解:這一章中的例子會盡可能的保持簡單,是以我們使用document.write()作為一種回報機制,可以讓你友善看到結果。你會在以後的章節中,你會學到其它更流行和通用的方法。
2.1. 資料、資料類型和資料運算符
資料時用來儲存資訊的。為了更有效的儲存資料,JavaScript需要為每個資料配置設定一個類型(type)。這個類型規定了使用這個資料能來什麼或不能幹什麼。舉個例子,JavaScript中有一種資料類型是數值(number),它允許對它擁有的資料進行一些計算。
在JavaScript中用來儲存資料的三種基本類型是:
l 字元串(String):一連串的字元,如“some characters”。
l 數值(Number):一個數字,包括浮點數。
l 布爾值(Boolean):包含一個真值(true)或假值(false)。
有時候也被稱作基本(primitive)資料類型,因為它們隻儲存單個值。
還有兩個不同的基本資料類型。它們不儲存資訊,用來對特定的情況給出我們警告:
l 空值(Null):表示沒有資料。
l 未定義(Undefined):表示沒有定義并賦給其值。 當你處理變量的時候,這個非常重要。
在這一章中我們會大量的使用這些資料類型。
2.1.1. 字元串資料類型
JavaScript解釋器要求字元串資料被單引号或雙引号括起來(大家都知道的分隔符)。舉個例子,這個腳本中,會往頁面中寫入some characters:
<html>
<body>
<script type="text/javascript">
document.write( "some characters" );
</script>
</body>
</html>
引号不會被寫到頁面上因為它們不是字元串的一部分;它們隻是簡單的告訴JavaScript字元串的開始和結束的地方。我們使用單引号也可以輕松的做到:
document.write( 'some characters' );
兩種方法都可以,隻要你使用與其打開字元串相同的方法關閉這個字元串,不要試圖把它像以下的方式分割開:
document.write( 'some characters" );
document.write( "some characters' );
當然,你可能需要在字元串本身中使用單引号或者雙引号,這種情況下你需要使用一個不同的分隔符。如果你使用雙引号來标記,這個指令會按你意願被解釋成:
document.write( "Paul's characters " );
但如果你使用單引号來進行标記,它們不會解釋成:
document.write( 'Paul's characters' );
這樣做會給你一個文法錯誤,因為JavaScript解釋器以為這個字元串在Panl中的l後結束了,它不明白後面要發生什麼。
n 注解:JavaScript文法和英語的文法類似,是使語言“可了解”的規則集合。就像英語中一個文法錯誤會使一個句子顯得沒有意義,JavaScript中的一個文法錯誤也會使這個指令沒有意義。
你可以使用單引号标志來分隔包含雙引号的字元串或者相反:
document.write( "Paul's numbers are 123" );
document.write( 'some "characters"' );
另一方面,如果你想在你的字元串中既包含單引号,也包含雙引号,你需要使用轉義序列。 實際上,使用轉義序列來代替我們使用的引号是一個好的變成習慣。因為它們使你的代碼更加易懂。
2.1.1.1. 轉義序列
轉義序列在你想使用鍵盤不能列印的字元使得情況下也是有用的。(像日元符,¥, 在西方的鍵盤中)。
表2-1列出了一些最常用的轉義序列
表2-1。常用的轉義序列
轉義序列
字元表示的意思
/b
撤銷。
/f
換頁。
/n
換行。
/r
回車符。
/t
制表符。
/'
單引号。
/"
雙引号。
//
反斜線。
/xNN
NN 是一個十六進制的數,表示拉丁字元集中的一個字元(拉丁字元集是說英語國家的規範)。
/uDDDD
DDDD 是一個十六進制的數,表示一個Unicode字元。
我們來改進一下這個會引起文法錯誤的字元串:
使用這個轉義序列 (/') 就可以被正确的解釋了:
document.write( 'Paul/'s characters' );
這個轉義序列告訴JavaScript解釋器,這個單引号屬于字元串本身,而不是一個分隔符。
ASCII是一個字元編碼方法,它使用0-254的值。作為一種選擇,我們可以使用十六進制/xNN 轉義序列.表示的ASCII值來指定一個字元。這個字元C在十進制中是67,在十六進制中是43,是以我們可以像這樣使用轉義序列來往頁面中進行寫入它:
document.write( "/x43" );
這個轉義序列 /uDDDD 和它的工作原理大緻相同,但它是用Unicode字元編碼方法。Unicode字元編碼方法擁有65535個字元。 在前面的一二百個ASCII編碼和Unicode編碼中字元集是相似的,你往頁面中寫入字元C可以使用如下的方式:
document.write( '/u0043' );