天天看點

《JavaScript和jQuery實戰手冊(原書第2版)》——2.4節變量

2.4 變量

可以直接在javascript程式中輸入數值、字元串或boolean值,但是隻有當我們已經有了所需的資訊的時候,這些資料類型才有效。例如,可以讓字元串“hi bob”出現在一個警告框中,如下所示:

但是,隻有在通路頁面的每個人名字都叫bob的時候,這條語句才有意義。如果你想要為不同的通路者顯示一條個性化資訊,名字就要根據通路頁面的人而有所不同,例如'hi mary'、 'hi joseph'、'hi ezra'等。基本上所有的程式設計語言都提供了所謂的變量來處理這種情況。

變量是存儲資訊以便稍後使用或操作它們的一種方式。例如,假設有一個基于javascript的彈球遊戲,其目标是擷取最高分。當一個玩家初次開始遊戲,他的分數是0,但是,随着彈球擊中目标,得分逐漸增加。在這個例子中,分數(score)是一個變量,因為它從0開始但是随着遊戲的進行而變化,換句話說,變量儲存可以變化的資訊。使用變量的另一個程式的例子如圖2-1所示。

把變量看做一種籃子,我們可以在籃子中放置一個物品,看看籃子裡的内容,把籃子裡的東西倒出來,或者甚至用其他的物品替換籃子中的物品。然而,即便可以改變籃子裡的内容,它仍然是同一個籃子。

《JavaScript和jQuery實戰手冊(原書第2版)》——2.4節變量

2.4.1 建立變量

建立變量的過程分兩步,包括聲明變量和命名變量。在javascript中,要建立一個名為score的變量,需要輸入:

var score;

第一部分var是一個javascript關鍵字,它建立了(或者用程式設計的術語來說,聲明了)一個變量。這條語句的第二部分score是一個變量。怎麼命名變量取決于你,但是,在命名變量的時候要遵守一些規則:

變量名必須以一個字母、$或_開頭。換句話說,不能以數字或标點符号開始一個變量:是以,1thing和&thing是無效的,但是score、$score和_score都是合适的變量名。

變量名隻能包含字母、數字、$和_。在變量名中的任何地方,都不能使用空格或任何其他的特殊字元:fish&chips以及fish and chips都是非法的變量名,但是fish_n_chips和plan9是有效的變量名。

變量名區分大小寫。javascript解釋器把大寫字母和小寫字母看成是不同的,是以,變量名score和score是不同的,而且它與score和score也是不同的。

避免使用關鍵字。javascript中的一些單詞是特定于語言本身:例如,var用來建立一個變量,是以,不能把一個變量命名為var。此外,一些單詞,例如alert、document和window,被看做是web浏覽器的特殊屬性。如果試圖用這些單詞作為變量名,最終會産生一個javascript錯誤。可以在表2-1中看到一些保留字的清單。并非所有這些保留字都會在所有的浏覽器中引發問題,但是,最好在命名變量的時候避開這些名字。

《JavaScript和jQuery實戰手冊(原書第2版)》——2.4節變量

除了這些規則,還要以使得變量名清楚和有意義為目标。根據将要在變量中存儲的資料的類型來命名變量,這會使人們更容易閱讀程式,并且立即了解它要做什麼。例如,對于記錄玩家的遊戲分數的變量來說,score是一個很好的名字。變量名s也有效,但是,單個字母“s”對于變量中存儲的内容不會有任何啟發。

同樣,要讓變量名容易閱讀。當你在一個變量名中使用多個單詞的時候,要麼在單詞之間使用一個下劃線,要麼把第一個單詞之後的每個單詞的首字母都大寫。例如,imagepath不如image_path或imagepath容易閱讀和了解。

2.4.2 使用變量

一旦建立了變量,就可以在其中存儲任何類型的資料。為了做到這一點,可以使用=符号。例如,要把數值0存儲到一個名為score的變量中,可以編寫如下代碼:

提示: 為了減少錄入,可以用一個var關鍵字聲明多個變量,如下所示:

一旦把值存儲到一個變量中,就可以使用變量的名字直接通路值。例如,要打開一個警告對話框并且顯示存儲在變量score中值,應該輸入:

alert(score);

注意,不能把變量和引号一起使用,引号隻是和字元串一起使用,是以,代碼alert('score')将顯示單詞“score”而不是存儲在變量score中的值。現在,你應該明白為什麼字元串必須包圍在引号中了:對于沒有引号的單詞,javascript解釋器将其當做特殊的javascript對象(例如alert()函數)或變量名處理。

常見問題

javascript中的空格、制表符和回車

javascript似乎對錄入錯誤很敏感。如何知道什麼時候應該使用一個空格字元,以及什麼時候不允許使用空格呢?

通常,javascript對空格、回車和制表符的使用并不是很嚴格。你經常可以漏掉空格,或者甚至添加額外的空格和回車,而不會有什麼問題。javascript解釋器忽略了額外的空格,是以,你可以自由地插入額外的空格、制表符和回車來格式化代碼。例如,在指派操作符的任何一端都不需要一個空格,但是,如果你覺得添加空格更容易閱讀的話,也可以添加它們。下面的兩行代碼都有效:

當然,能夠插入額外的空格,并不意味着應該這麼做。實際上,由于存在額外的空格,前兩個例子變得難以閱讀。是以,首要的一般規則是,如果額外的空格使得代碼容易了解,就添加它。例如,在一次聲明多個變量或一次設定多個變量的值的時候,額外的回車能夠使得代碼更容易閱讀。如下是單獨一行的代碼:

是否認為空格便于閱讀,這取決于你,javascript解釋器隻是忽略這些換行。在2.8節和4.8.3節,你将分别看到空格使得帶有數組和javascript對象直接量的代碼更容易閱讀的例子。

上述規則有幾個重要的例外,例如,不能在字元串中插入回車,換句話說,不能像下面這樣把字元串分隔到兩行:

像這樣插入一個回車(按下Enter鍵)将會導緻一個javascript錯誤并且程式無法運作。

此外,在關鍵字之間必須放置一個空格:例如,varscore=0和var score=0是不同的。

後一個例子建立了一個名為score的新變量,而前者将值0存儲到了一個名為varscore的變量中。javascript解釋器需要通過var和score之間的空格來識别var關鍵字,即var score=0。然而,并非必須在關鍵字和指派運算符(=)或結束語句的分号等符号之間使用一個空格。

注意: 你隻需要使用var關鍵字一次,即第一次建立該變量的時候。此後,可以随意地把一個新值賦給變量而不需要使用var。

繼續閱讀