變數
變數是用來儲存或讀取一些資料, 以方便進行運算。
寫法:定義一個變數
只定義一個變數的名稱, 但不即時指定它的資料:
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 就是一個整數型態的變數了。
變數名稱(或函數名稱)的命名規則:
- 變數名稱只可以由英文字、數目字及底線 (_)組成
- 變數名稱的第一個字元不可以是數目字。
- 不可以是關鍵字。 例如你不可以用 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><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><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 。