javascript快速入門7--ECMAScript語法基礎


ECMAScript的基礎概念

熟悉Java、C和Perl這些語言的開發者會發現ECMAScript的語法很容易掌握,因為它借用了這些語言的語法。Java和ECMAScript有一些關鍵語法特性相同,也有一些完全不同。ECMAScript的基礎概念如下:

  • 區分大小寫。與Java一樣,變量、函數名、運算符以及其他一切東西都是區分大小寫的,也就是說,變量test不同於變量Test。
  • 變量是弱類型的。與Java和C不同,ECMAScript中的變量無特定的類型,定義變量時只用var運算符,可以將它初始化為任意的值。這樣可以隨時改變變量所存數據的類型(盡管應該避免這樣做,但作為Web開發,這確實可以提高效率)。
  • 每行結尾的分號可有可無。Java、C和Perl都要求每行代碼以分號(;)結束才符合語法。ECMAScript則允許開發者自行決定是否以分號結束一行代碼。如果沒有分號,ECMAScript就把這行代碼的結尾看作該語句的結尾(與Visual Basic和VBScript相似),前提是這樣沒有破壞代碼的語義。最好的代碼編寫習慣是總加入分號,因為沒有分號,有些瀏覽器就不能正確運行!
  • 注釋與Java、C和PHP語言的注釋相同。ECMAScript借用了這些語言的注釋語法。有兩種類型的注釋——單行注釋和多行注釋。單行注釋以雙斜線(//)開頭。多行注釋以單斜線和星號(/*)開頭,以星號加單斜線結尾(*/)。
  • 括號表明代碼塊。從Java中借鑒的另一個概念是代碼塊。代碼塊表示一系列應該按順序執行的語句,這些語句被封裝在左括號({)和右括號(})之間。

一些示例如下:

    var txt = "some string";
    TXT = "other string";//TXT無須聲明,可以直接賦值
    alert(txt==TXT);//false
    var str = "string" //分號可有可無
    var hob = "No";var bob = "Yes";//使用分號,可以在一行上寫多行語句
    /*
    多行注釋
    alert("注釋中的代碼不會被執行")
    */
    if (txt=="some string") {//代碼塊
        alert(true);
    }

 

變量

如前所述,ECMAScript中的變量是用var運算符(variable的縮寫)加變量名定義的,例如:

var test = "Hello!World!";

 

在這個例子中,聲明了變量test,並把它的值初始化為"Hello!World!"(字符串)。由於ECMAScript是弱類型的,所以解釋程序會為test自動創建一個字符串值,無需明確的類型聲明。還可以用一個var語句定義兩個或多個變量:

var a = "some",b="string"

 

前面的代碼定義了變量test,初始值為"some",還定義了變量test2,初始值為"string"。不過用同一個var語句定義的變量不必具有相同的類型,如下所示:

var a=12,b="string";

 

即使a和b屬於兩種不同的數據類型,在ECMAScript中這樣定義也是完全合法的。與Java不同,ECMAScript中的變量並不一定要初始化(它們是在幕后初始化的,將在后面討論這一點)。因此,下面一行代碼也是有效的:

var a;
//只聲明

 

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

    var test = "string";
    alert(test);
    //.....若干代碼后
    test=123;//更改了類型
    alert(test);

 

這段代碼將毫無問題地輸出字符串值和數字值。但是,如前所述,使用變量時,好的編碼習慣是始終存放相同類型的值。變量名需要遵守兩條簡單的規則:

  • 第一個字符必須是字母、下划線(_)或美圓符號($)
  • 余下的字符可以是下划線、美圓符號或任何字母或數字字符。

下面的變量名都是合法的:

    var a;
    var $a;
    var $;
    var _a;
    var _;
    var a23;

 

當然,只是因為變量名的語法正確並不意味着就該使用它們。變量還應遵守一條著名的命名規則:

  • Camel標記法——首字母是小寫的,接下來的單詞都以大寫字母開頭
  • Pascal標記法——首字母是大寫的,接下來的單詞都以大寫字母開頭
  • 匈牙利類型標記法——在以Pascal標記法命名的變量前附加一個小寫字母(或小寫字母序列),說明該變量的類型。例如,i表示整數,s表示字符串

下面的表列出了用匈牙利類型標記法定義ECMAScript變量使用的前綴:

類型 前綴 示例
數組 a aValues
布爾型 b bFound
浮點型(數字) f fValue
函數 fn fnMethod
整型(數字) i iValue
對象 o oType
正則表達式 re rePattern
字符串 s sValue
變型(可以是任何類型) v vValue

下面是一些命名示例   

 var userName="CJ";//駝峰命名方式
    var UserName="CJ";//Pascal命名方式
    var sUserName="CJ";//匈牙利命名方式

 

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

    var str ="some";
    otherStr += str+" "+"string";
    alert(otherStr);

 

在上面的代碼中,變量otherStr並沒有用var運算符定義,這里只是插入了它,就像已經聲明過它。ECMAScript的解釋程序遇到未聲明過的標識符時,用該變量名創建一個全局變量,並將其初始化為指定的值。這是該語言的便利之處,不過如果不能緊密跟蹤變量,這樣做也很危險。最好的習慣是像使用其他程序設計語言一樣,總是聲明所有變量。

關鍵字

ECMA-262定義了ECMAScript支持的一套關鍵字(keyword)。這些關鍵字標識了ECMAScript語句的開頭和/或結尾。根據規定,關鍵字是保留的,不能用作變量名或函數名。下面是ECMAScript關鍵字的完整列表:

break else new var
case finally return void
catch for switch while
continue function this with
default if throw  
delete in try  
do instanceof typeof  

如果把關鍵字用作變量名或函數名,可能得到諸如“Identifier expected”(應該有標識符,缺少標識符)這樣的錯誤消息。

保留字

保留字是對於JavaScript有特殊含義的單詞。因此,不能將它們用作變量名或函數名。也就是說,它們可能是JavaScript未來版本中的命令。現在就應該避免使用它們,以免在新版本發布時不得不修改代碼。如果將保留字用作變量名或函數名,那么除非將來的瀏覽器實現了該保留字,否則很可能收不到任何錯誤消息。當瀏覽器將其實現后,該單詞將被看作關鍵字,如此將出現關鍵字錯誤。

ECMAScript 3為以后保留的單詞:

abstract final protected
boolean float public
byte goto short
char implements static
class import super
const int synchronized
debugger interface throws
double long transient
enum native volatile
export package extends
private    

ECMAScript 4:ECMAScript4現在還沒有什么實現.ECMAScript4中,下面的不再是保留字了,但也應該盡量不要使用它們

boolean final short byte float static char int double long

下面的被加入了保留字

as namespace use false true null is


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM