ecmascript使用變數需宣告嗎

2022-01-27 13:00:27

ecmascript使用變數不需要宣告。在ecmascript中,使用變數之前不必宣告,變數宣告不是必須的;原因:ECMAScript的解釋程式遇到未宣告過的識別符號時,會用該變數名建立一個全域性變數,並將其初始化為指定的值。

本教學操作環境:windows7系統、ECMAScript 6版、Dell G3電腦。

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

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

宣告變數

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"; 

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

型別字首範例
陣列aaValues
布林型bbFound
浮點型(數位)ffValue
函數fnfnMethod
整型(數位)iiValue
物件ooType
正規表示式rerePattern
字串ssValue
變型(可以是任何型別)vvValue

變數宣告不是必須的

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

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

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

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

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

【相關推薦:

以上就是ecmascript使用變數需宣告嗎的詳細內容,更多請關注TW511.COM其它相關文章!