Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1695366
  • 博文数量: 607
  • 博客积分: 10031
  • 博客等级: 上将
  • 技术积分: 6633
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-30 17:41
文章分类

全部博文(607)

文章存档

2011年(2)

2010年(15)

2009年(58)

2008年(172)

2007年(211)

2006年(149)

我的朋友

分类: 系统运维

2006-07-14 14:23:37

 

第 5 章 Variables

 作者: 伍新華 Email: ng-sun-wah@graduate.hku.hk

 


 

 Variable 的設定

  在本書前面的例子, 你已多次看過變數 (variable) 的操作, 變數是一個我們自訂的名稱, 這名稱可用來代表一個數值、一個字或一句文字, 而這代表的數值或文字可隨程式的進展而改變, 例如以下有關圓形面積的計算:

area= 0          ( 這將 0 放在 area 這字上, 因此開始時 area=0 )
area= rad * rad * 3.1416    ( 這是設定 area 的新數值 )

  在以上的程式, area 沒有固定數值 (因此稱為變數), 而是跟著 rad 的數值而改變, 例如 rad 是 5, area 就會是 78.54, 若 rad 是 8, area 就會是 201.06。

  變數的名稱是為 identifier (識別字), 在 script 中放下一個 identifier, 瀏覽器就會找這變數來處理。Identifier 是一個自訂的名稱, 但要依一定規格 (請看 1.10-6 的一節), 在本書的例子, 這些名稱用粗斜體來顯示, 例如 area

  要設定一個變數, 標準是使用 var 這一個指令, 但假若你同時將一個數值配給這變數, 可略去 var 這字, 例如:








 

Assignment:

  在 JavaScript, assignment (配值) 有兩個用途:

 

1. 將一個屬性給予一個物件的 property:

  這在 1.3-2 的一節已說過, 我們用正確的語法來指定一個物件的 property, 就可將某一個屬性給予這 property。例如網頁的來源 (location) 是 window 的 property, 使用這語法:

  這就可以將一個 URL 作為網頁的來源, 這類 assignment 操作, 在本書的例子都經常出現。

 

2. 設定變數:

  Assignment 另一項功用是給予變數一個數值 (文字、數字或物件), 就是這一章說的變數設定, 使用的是 = 這符號, 方向是將右方的值放在左方的變數上, 例如:

  

 

 


 變數的用途

  我們在程式中設定變數, 一般有以下用途。

1. 代表最後才能定案的數值:

  變數可讓一個數值隨程式的進展而變化, 到最後才計算出結果, 例如設定area=rad*rad*3.1416, area 會看 rad 是什麼數值, 然後才得出結果, 這是變數最常見的用途。

 

2. 控制程式的進展:

  我們可以用變數來記錄程式的進展, 從而控制程式的變化, 隨後會說到 flag 的功用, 就是用變數來設定。在 練習-101, 該例子用 tries 這變數來記錄觀看者輸入錯誤的次數, 每錯一次 tries 就加 1, 到了某個數值就作出反應, 這就是用變數來控制程式。

 

3. 用來代表傳回的數值:

  變數可用來代表一項功能產生出來的數值, 在程式術語, 我們是說這功能傳回一個值 (return a value), 這值可以是數字, 也可以是文字。

  例如在 Date object 的一章說到這功能: new Date( ) , 這是傳回當時系統的時間, 這時間要用一個名稱來代表, 例如 x=new Date( ), 這 x 就代表傳回的資料, 我們用 document.write(x)alert(x) 就可看到 x代表的資料。

 

4. 用變數代表 object:

  若 JavaScript 內有一些長的 object 名稱, 我們可以使用一個變數來代表這名稱, 請看 練習-37 的例子, 例如:

x=document.display.inbox 或 x=document.display.inbox.value

  開啟子視窗時, 我們也可用變數來代表新變出來的視窗, 例如msgWin=window.open(" . . . . ")

 

  上述的第三及第四個用途, 不是絕對要使用變數, 例如以下三句:

x=document.fm.tx.value   用 x 代表文字框的文字
y=x.toUpperCase( )      將 x 代表的文字變為大寫, 並用 y 代表
alert(y)          用 alert( ) 顯示 y 代表的文字

  筆者在這書中有很多這樣的寫法, 目的是將每項功能在一行列出來, 使讀者易於了解, 你初學程式時, 也可使用這寫法, 犯錯的機會較少, 但對程式熟習後, 就應使用以下的寫法:

alert(document.fm.tx.value.toUpperCase( ) )

 

 


 變數的重複使用

  在一個程式中, 假若變數有一連串的改變, 我們應該盡量使用同一變數來處理這連串的改變, 請看以下例子:

  以上的寫法只使用 a 一個變數, 這變數在程式的進展中一路改變。另一個寫法是使用多個變數, 請看以下例子。

  這寫法與前個寫法結果一樣, 但使用了三個變數, 在程式的操作中, 這要在記憶體耗用多四個位置來記載多出的兩個變數, 如下:

  第二個寫法不只耗用記憶體空間, 操作也較為緩慢, JavaScript 的程式一般都較細少, 所以問題不大, 不過我們也應養成良好的程式編寫習慣。

 

 


 文字變數及數字變數

  請同時參看 7.7 的一節。

 

1. 文字變數及數字變數的分別

  假若變數是用來代表文字 (string), 這文字就要放在 " " 內, 否則會被看成是錯誤, 例如:

x="telephone number at home"

x=telephone number at home   ← 錯

 

  假若變數是用來代表數字, 這數字不能放在 " " 內, 否則會被看成是文字, 例如

y = 24680      ← y 代表 24680 這數字

y ="24680"     ← y 代表 24680 這文字

 

練習-42 文字及數字變數

  在這練習, 你可看到在變數中, 一個數字可以作為數值來處理, 也可作為文字來處理, 看我們是否將數字放在 " " 內。

1. 請用瀏覽器開啟示範磁碟中的 , 這檔案有以下內容:



2. 開啟瀏覽器及載入這檔案, 應見到以下顯示:

  第一項會被看作為數值來處理, 所以會變出 7 的加值, 其他兩項就只是作為文字來顯示。

 

2. 文字變數

  若網頁中的 JavaScript 經常要重複使用一句長文字, 我們可以用一個變數來代表這句文字, 就可減少輸入的工夫及錯誤的機會, 例如:

a="Please note that this message may not be correct in some cases"

 

練習-43 文字變數

  這是個簡單的練習, 你看到文字變數的示範。

1. 請用瀏覽器開啟示範磁碟中的 , 這檔案有以下內容:






2. 網頁開啟後, 你會見到在網頁及在 alert 對話盒中分別會有文字出現, 請比較兩者格式不同之處。

3. 請你將這檔案複製去硬碟, 然後用「記事本」將原始檔中變數設定的 " " 刪去, 如下:

a=Please note that this message \n may not be correct in some cases.

  將這更改過的檔案存檔, 在瀏覽器中看這新檔案, 看有什麼錯誤。

 

 

 


 Local 及 global variables

  在一個 function 內設定一個 variable, 這個 variable 只在這 function 內有效, 是為local variable (局部變數)。 在一個 function 外設定的 variable 在整份文字都有效, 是為 global variable (通用變數), 請看以下例子。

 

練習-44 Local 及 global variables

  在這練習, 你看到 local 及 global variables 的分別。

1. 請用瀏覽器開啟示範磁碟中的 , 這檔案有以下內容:


2. 載入這網頁時, 留意 document.write( ) 的句子, 看哪一句不能生效, 你應看到一個錯誤訊息的對話盒, 告訴你 b 是 undefined。

 

  在這例子, b 這變數在 testVar( ) 這 function 內設定, 所以在 testVar() 的範圍外無效, 但你要留意一點, 若 testVar( ) 已啟動, b 就會變成 global variable, 在其他範圍也會生效, 你可試將上述的檔案作以下更改:





  今次第 3 及第 4 句放在 testVar( ) 之後, testVar( ) 啟動時使到 b="This is a dog. " 變成 global variable, 所以今次第 4 個 document. write( ) 可顯示出 b 的文字。

 


( 第 5 章完 )

阅读(821) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~