1. 程式人生 > 實用技巧 >ECMAScript 變數無需明確的型別宣告

ECMAScript 變數無需明確的型別宣告

請使用 var 運算子宣告變數。

變數名需要遵守一些簡單的規則。

宣告變數

在上一節中我們講解過,ECMAScript 中的變數是用 var 運算子(variable 的縮寫)加變數名定義的。例如:

var test = "hi";

  

在這個例子中,聲明瞭變數 test,並把它的值初始化為 "hi"(字串)。由於 ECMAScript 是弱型別的,所以解釋程式會為 test 自動建立一個字串值,無需明確的型別宣告。

還可以用一個 var 語句定義兩個或多個變數:

var test1 = "hi", test2 = "hello";

  

前面的程式碼定義了變數 test1,初始值為 "hi",還定義了變數 test2,初始值為 "hello"。

不過用同一個 var 語句定義的變數不必具有相同的型別,如下所示:

var test = "hi", age = 25;

  

這個例子除了(再次)定義 test 外,還定義了 age,並把它初始化為 25。即使 test 和 age 屬於兩種不同的資料型別,在 ECMAScript 中這樣定義也是完全合法的。

與 Java 不同,ECMAScript 中的變數並不一定要初始化(它們是在幕後初始化的,將在後面討論這一點)。因此,下面這一行程式碼也是有效的:

var test;

  

此外,與 Java 不同的還有變數可以存放不同型別的值。這是弱型別變數的優勢。例如,可以把變數初始化為字串型別的值,之後把它設定為數字值,如下所示:

var test = "hi";
alert(test);
test = 55;
alert(test);

  

這段程式碼將毫無問題地輸出字串值和數字值。但是,如前所述,使用變數時,好的編碼習慣是始終存放相同型別的值。

足球錄影

命名變數

變數名需要遵守兩條簡單的規則:

  • 第一個字元必須是字母、下劃線(_)或美元符號($)
  • 餘下的字元可以是下劃線、美元符號或任何字母或數字字元

下面的變數都是合法的:

var test;
var $test;
var $1;
var _$te$t2;

  

著名的變數命名規則

只是因為變數名的語法正確,並不意味著就該使用它們。變數還應遵守以下某條著名的命名規則:

Camel 標記法

首字母是小寫的,接下來的字母都以大寫字元開頭。例如:

var myTestValue = 0, mySecondValue = "hi";

  

Pascal 標記法

首字母是大寫的,接下來的字母都以大寫字元開頭。例如:

var MyTestValue = 0, MySecondValue = "hi";

  

匈牙利型別標記法

在以 Pascal 標記法命名的變數前附加一個小寫字母(或小寫字母序列),說明該變數的型別。例如,i 表示整數,s 表示字串,如下所示“

var iMyTestValue = 0, sMySecondValue = "hi";

  

本教程採用了這些字首,以使示例程式碼更易閱讀:

型別字首示例
陣列 a aValues
布林型 b bFound
浮點型(數字) f fValue
函式 fn fnMethod
整型(數字) i iValue
物件 o oType
正則表示式 re rePattern
字串 s sValue
變型(可以是任何型別) v vValue

變數宣告不是必須的

ECMAScript 另一個有趣的方面(也是與大多數程式設計語言的主要區別),是在使用變數之前不必宣告。例如:

var sTest = "hello ";
sTest2 = sTest + "world";
alert(sTest2);

  

在上面的程式碼中,首先,sTest 被宣告為字串型別的值 "hello"。接下來的一行,用變數 sTest2 把 sTest 與字串 "world" 連在一起。變數 sTest2 並沒有用 var 運算子定義,這裡只是插入了它,就像已經宣告過它一樣。

ECMAScript 的解釋程式遇到未宣告過的識別符號時,用該變數名建立一個全域性變數,並將其初始化為指定的值。

這是該語言的便利之處,不過如果不能緊密跟蹤變數,這樣做也很危險。最好的習慣是像使用其他程式設計語言一樣,總是宣告所有變數。