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語句定義的變量沒必要具備相同的類型,以下所示:this

var a=12,b="string";

 

即便a和b屬於兩種不一樣的數據類型,在ECMAScript中這樣定義也是徹底合法的。與Java不一樣,ECMAScript中的變量並不必定要初始化(它們是在幕後初始化的,將在後面討論這一點)。所以,下面一行代碼也是有效的:編碼

var a;
//只聲明

 

此外,與Java不一樣的還有變量能夠存放不一樣類型的值。這是弱類型變量的優點。例如,能夠把變量初始化爲字符串類型的值,以後把它設置爲數字值,以下所示:spa

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

 

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

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

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

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

 

固然,只是由於變量名的語法正確並不意味着就該使用它們。變量還應遵照一條著名的命名規則:code

  • 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
相關文章
相關標籤/搜索