JavaScript

   


變數 (Variable)


變數

變數是用來儲存或讀取一些資料, 以方便進行運算。

寫法:定義一個變數

只定義一個變數的名稱, 但不即時指定它的資料:
var variable_name ;

定義一個變數名稱, 同時指定它的資料:
var variable_name = data ;

  • var 是用來定義變數的, variable_name 是變數的名稱, data 是任何型態的資料。

例子:定義一個字串型態的變數

var myname = "Tom" ;

例子說明

  • 例子中定義了一個變數, 變數名稱是 myname 。 因為該資料是用引號括著, 所以資料型態是字串 (String), 資料就是一句 Tom 字串, 而 myname 就是一個字串型態的變數了。

例子:定義一個整數型態的變數

var myage = 16 ;

例子說明

  • 例子中定義了一個變數, 變數名稱是 myage 。 我用 myage 來儲存整數型態, 而不是字串型態的資料, 因此不用引號括著。 該資料型態是整數 (Integer), 資料就是一個 16 整數, 而 myage 就是一個整數型態的變數了。

變數名稱(或函數名稱)的命名規則:

  1. 變數名稱只可以由英文字、數目字及底線 (_)組成
  2. 變數名稱的第一個字元不可以是數目字。
  3. 不可以是關鍵字。 例如你不可以用 function 作為某個變數的名稱, 因為它是一個關鍵字。

例子:

合法的名稱: my_name , myName , g2 , _2
不合法的名稱有: 01 , 1choice , var , function , Array

例子:定義變數

<script>
var student_name = "Tom";
var student_age = 16;

document.write("<br>Student Name : " + student_name);
document.write("  Age : " + student_age);
</script>

資料的型態 (Data Type)

常見的資料型態有以下幾種:

資料型態 例子 說明
字串
(String)
var name = "Tom";
var model = "1001";
字串通常是用雙引號 (") 或單引號(')括著, 例子中表示了一個 Tom 字串和一個 1001 字串。
數目
(Number)
var age = 16;
var pi = 3.141592653589793;
var expo = 54e7;
var octal_num = 010;
var hex_num = 0x10;
數目可以是實數和整數, 整數包括10 進制、8 進制和 16 進制。 數目前面是 0 代表 8 進制, 數目前面是 0x 代表 16 進制
布林
(Boolean)
var is_enabled = true;
var ie3 = false;
布林資料只有兩個值, 就是 true 或者 false 任何一個, 適合用作一些只有兩個可能的運算。
空白
(Null)
var no_content; 資料沒有內容, 例如你只定義它變數的名稱, 但沒有指定內容, 那麼它就等於 null 了。
物件
(Object)
var dw = document.write;
var myname = document.myform.myname;
通常是為了方便而定義物件變數, 例如可以用 dw 代替 documen.write, 那就不用打很多字了
陣列
(Array)
var even_num = new Array(2,4,6,8,10);
var fruit = new Array("apple","orange");
陣列是用來儲存一組相同型態的資料, 在本篇稍後詳述。

你可以隨時指定變數的內容, 亦即是指定它的資料, 但應留意該資料的型態。

大部份程式語言例如 Pascal、C++、 Java 等, 變數的型態是不可以隨時改變的, 例如你定義了一個字串型態的變數, 你只可以用它來存取字串型態的資料, 而不可存取其它型態的資料。

但 JavaScript 就不同了, JavaScript 是一種寬鬆型態語言 (Loosely Typed Language), 即是說變數的型態是可以隨時改變的。

  • 好處:

    不須定義太多變數; 不須牢記那一個變數是那一種型態; 不須寫太多東西來轉換資料型態, 因為 JavaScript 會自動判斷你想用的資料型態。

  • 壞處:

    雖然 JavaScript 會自動判斷你想用的資料型態, 但有時未必是你心目中想用的那一種型態, 例如你想做整數型態的運算, 它郤做了字串型態的運算。

Netscape 為了方便 JavaScript 與 Java 溝通, 估計將來 JavaScript 的資料型態會盡量與 Java 相容, 因此我建議大家盡量留意一個變數的型態。

陣列 (Array)

陣列是用來儲存多個資料, 而且這些變數是同一型態的 (但 JavaScript 允許一個陣列儲存不同型態的資料)。 陣列內的資料就稱為該陣列的元素 (elements), 陣列內的資料數目就稱為該陣列的長度 (length)。

當你想存取很多資料, 就可以用陣列, 好處就是不用為每個資料都定義一個變數名稱, 還可以方便存取大量資料。

寫法:定義一個陣列

只定義一個陣列的名稱, 但不指定它的內容:
var array_name = new Array() ;

定義一個陣列的名稱和長度, 但不指定它的內容:
var array_name = new Array(length) ;

定義一個陣列的名稱、長度和內容:
var array_name = new Array(data1 , data2 , data3 , ... , dataN) ;

  • array_name 是陣列的名稱。
  • new 是用來將記憶體分配給一個新的物件, 它是是一個關鍵字。
  • Array 是用來定義陣列的。
  • length 是陣列的資料數目, 它的值可以是由 1 開始的正整數, 例如你想定義一個儲存星期的英文字陣列, length 的值就可以是 7。
  • data1 , data2 , data3 , ... , dataN  是 N 個資料, 那麼這個陣列的長度就是 N   了, 例子:
    var week_array = new Array("Monday", "Tuesday", "Wednesday",
                                                 "Thursday", "Friday", "Saturday", "Sunday");

    例子中定義了一個陣列來儲存星期的英文字, 這個陣列有 7 個資料, 因此陣列的長度就是 7 了。 因為句子太長, 所以寫成兩行, 而分隔位置可以在逗號的左右。

定義了一個陣列後, 就可以存取陣列內的資料。 要存取這些資料, 就要學習它們的表示方式。

表示方式:陣列內的資料

array_name[index]
  • index 是陣列內某個資料的位置, 它是由 0 開始的, 而不是由 1 開始的, 大家須要留意這點, 因為這個電腦概念與人類實際生活不同, 所以初學者很易會弄錯的。 而 index 的最大值就是 length - 1 而不是 length
  • [  和  ]   是左中括號和右中括號, 用來括著 index

我們也可以取得一個陣列的長度, 就是用一個陣列的 length 屬性, 而且它是整數型態的。

表示方式:陣列的長度

array_name.length

我們就用上面定義了的 week_array 做例子, 下面列出了 week_array 內所有資料的表示方式和它們的內容:

表示方式 內容
week_array[0] "Monday"
week_array[1] "Tuesday"
week_array[2] "Wednesday"
week_array[3] "Thursday"
week_array[4] "Friday"
week_array[5] "Saturday"
week_array[6] "Sunday"
week_array.length 7

例子: 應用陣列

<script>
var student_name = new Array("Tom", "John", "Sam");
var num_of_student = student_name.length;
var student_age = new Array(num_of_student);
student_age[0] = 16;
student_age[1] = 18;
student_age[2] = 20;

document.write("There are " + num_of_student + " students.");
document.write("<br>First student : " + student_name[0]);
document.write(" ; Age : " + student_age[0]);
document.write("<br>Second student : " + student_name[1]);
document.write(" ; Age : " + student_age[1]);
document.write("<br>Third student : " + student_name[2]);
document.write(" ; Age : " + student_age[2]);
</script>

例子說明:

  • var student_name = new Array("Tom", "John", "Sam");

    定義一個陣列, 名稱是 student_name , 同時指定它的內容, 分別是 "Tom", "John", "Sam" 三個字串型態的資料。 緊記第一個資料的位置是 0, 而這埵 3 個資料, 所以最後一個資料的位置就是 2 了。

  • var num_of_student = student_name.length;

    定義一個變數, 名稱是 num_of_student , 然後將指定它的內容, 內容是 student_name.length , 因為 student_name 陣列內有 3 個資料, 所以 student_name.length 的值就是 3 了, 而且它是整數型態, 因此 num_of_student 是整數型態的變數。

  • var student_age = new Array(num_of_student);

    定義一個陣列, 名稱是 student_age , 同時指定它的長度, 長度為 num_of_student 的內容, 亦即是 3 了, 所以 student_age 就是一個有 3 個資料的陣列。

  • student_age[0] = 16;
    student_age[1] = 18;
    student_age[2] = 20;

將 student_age 陣列中的第一個資料的內容指定為 16 , 第二個資料指定為 18 , 第三個資料指定為 20 。







[到頁頂] [首頁] [速查表]