2011年11月20日 星期日

JavaScript變數、資料型態

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

如何宣告變數
JavaScript中的變數宣告基本的語法為: var 變數名稱〔=變數初始值〕

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

定義一個變數名稱, 同時指定它的資料:
var variable_name = data ;
var 是用來定義變數的, variable_name 是變數的名稱, data 是任何型態的資料。

單一宣告
var name;

var student_name = "Tom";
var student_age = 16;


多變數同時宣告
var name, sex, student_age;


方式
JavaScript 程式的內的命名法則
使用 JavaScript 程式時,常常需要對物件、函數或變數命名。以下為一般命名的基本法則:
由於 JavaScript 程式對英文字母大小寫敏感,代表不同的意義,故命名時盡量避免大小寫參雜的方式。 第一個字母必須是是英文字母。 全長應少於 255 個英文字母。 一般電腦程式在使用陣列函數 (array) 來描述時,很多程式語言是以 0 為第一個元素 (element) 代碼,但在 JavaScript 語法則是使用 1 開始計數。 不能是空白鍵或 JavaScript 的保留字。 必須用英數字型(亦即英文與數字)與『_』(底線符號)來命名,使用特殊符號與中文字將會產生錯誤。

命名/識別子 (identifier) :
提供作為命名變數,命名函數,提供迴圈的標籤。
區分大小寫 var x; var X 並不相同
第一個字元必須是ASCII字母 (大小寫皆可)、底線 (_)字元
注意數字不能拿來當第一個字元
後面的字元必須是字母、數字、或底線 var _x; var x_1
複合字的第一個字建議要大寫 var MyFriend;
變數名稱不能為保留字

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


常見的 JavaScript 的保留字如下:
Abstracr  else  long  this
boolean  enum export  lastModified  throw
break  Extends  Native  throws
byte  false  new  transient
Case  final  null  true
catch  finally  package  try
char  Float  private  var
class  for  protected  Void
Const  function  public  volatile
continue  go to  return  while
Date  If  Short  with
deburgger  implement  static  
default  import  super  
delete do  in  switch  
double  instanceof  synchronized  
int  interface

資料的型態 (Data Type) :
常見的資料型態有以下幾種:

字串(String):字串通常是用雙引號 (") 或單引號(')括著。
數目(Number):數目可以是實數和整數, 整數包括10 進制、8 進制和 16 進制。 數目前面是 0 代表 8 進制, 數目前面是 0x 代表 16 進制。
布林(Boolean):布林資料只有兩個值, 就是 true 或者 false 任何一個, 適合用作一些只有兩個可能的運算。
空白(Null):資料沒有內容, 例如你只定義它變數的名稱, 但沒有指定內容, 那麼它就等於 null 了。
物件(Object):通常是為了方便而定義物件變數, 例如可以用 dw 代替 documen.write, 那就不用打很多字了。
陣列(Array):陣列是用來儲存一組相同型態的資料。

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

JavaScript 是一種寬鬆型態語言 (Loosely Typed Language), 即是說變數的型態是可以隨時改變的。
  • 好處:
    不須定義太多變數; 不須牢記那一個變數是那一種型態; 不須寫太多東西來轉換資料型態, 因為 JavaScript 會自動判斷你想用的資料型態。
  • 壞處:
    雖然 JavaScript 會自動判斷你想用的資料型態, 但有時未必是你心目中想用的那一種型態, 例如你想做整數型態的運算, 它郤做了字串型態的運算。

由於JavaScript是一種寬鬆型態語言,於宣告變數時並不需直接宣告其型態(也可以不使用var指令,便可直接使用該變數),而可以指定任何值給予所宣告的變數,如:
var My_Var; //宣告My_Var變數名稱
My_Var = 0; //宣告My_Var變數為數字型態,並把0指定給My_Var
My_Var = "Test"; //宣告My_Var變數為字串型態,並把Test指定給My_Var
My_Var = false;  //宣告My_Var變數為布林值型態,並把false指定給My_Var
My_Var = new Array();  //宣告My_Var變數為陣列物件型態,並宣告new Array()

使用var宣告變數而還沒指定資料給它時,如果您嘗試顯示它的值,就會出現"undefined"值。
在許多程式語言中,變數只要宣告一次就可以了,如果您重複宣告,在許多(編譯式)語言中還會出現編譯的錯誤訊息,但在JavaScript中,是可以使用var重複宣告同一個名稱的變數,例如:
var x = 10; // 宣告x變數,並指定10給它
var x; // 再宣告一次x變數是OK的,而目前的值仍是10
var x = 20; // 再來一次宣告,這次x被設為20

如果您在還沒宣告變數時,就嘗試顯示某個變數名稱時,就會發生錯誤,例如:
alert(y); // y沒有定義


區域變數(Local Variable)與全域變數(Global Variable)的觀念:
每個JavaScript在執行時,都會有個全域物件,如在瀏覽器中,Window(視窗)物件就是JavaScript執行時的全域物件。

看看以下範例:
x = 10; // 直接宣告並指定值,自動將該名稱設定為全域變數,在整個JavaScript執行期間,所有區域都可引用
function some(arg) {
var y = 10; // 區域變數,「區域」外不可引用
}
var z = 20; // 在函式外使用var宣告的變數,以全域物件為範圍
//如果不使用var,而是直接宣告變數並指定值,則它是個全域變數,例如:
function some() {
x = 10; // x 是全域
}
some(); // 執行函式,所以當中的x會被宣告
alert(x); // 在這邊讀取x是OK的
//如果全域變數與區域變數同名,則區域變數會覆蓋全域變數,例如:
x = 20;
function some() {
var x = 10; // 區域變數x覆蓋全域變數x
alert(x); // 顯示10
}
some();
alert(x); // 顯示20
// 在JavaScript中沒有區塊(Block)變數的觀念,只要是var宣告的,在整個區域中就是可引用的,例如:
function some() {
if(true) {
var x = 10; // 雖然在if區域中宣告x
}
alert(x); // 但這邊還是可以顯示x的值為10
}
// 不過要注意的是,由於JavaScript的是由上往下執行,所以您的變數要有用,必須在使用它之前宣告,例如:
function some() {
alert(x); // x 未定義
var x = 10;
alert(x); // 顯示10
}
// 當您在JavaScript中宣告了一個變數,您可以使用delete將刪除,例如:
x = 10; // 宣告x並指定值
delete x; // 刪除x
alert(x); // x

沒有留言:

張貼留言