熟悉Java、C和Perl這些語言的開發者會發現ECMAScript的語法很容易掌握,由於它借用了這些語言的語法。Java和ECMAScript有一些關鍵語法特性相同,也有一些徹底不一樣。ECMAScript的基礎概念以下:正則表達式
一些示例以下:數組
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
下面的表列出了用匈牙利類型標記法定義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