天天看點

資料和判定(一)

資料和判定是所有“智能”程式的基礎。在這章的開始,我們先看一下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' );

繼續閱讀