ECMAScript的基礎(chǔ)概念熟悉Java、C和Perl這些語言的開發(fā)者會(huì)發(fā)現(xiàn)ECMAScript的語法很容易掌握,,因?yàn)樗栌昧诉@些語言的語法,。Java和ECMAScript有一些關(guān)鍵語法特性相同,也有一些完全不同,。ECMAScript的基礎(chǔ)概念如下:
一些示例如下: var txt = "some string"; TXT = "other string";//TXT無須聲明,可以直接賦值 alert(txt==TXT);//false var str = "string" //分號(hào)可有可無 var hob = "No";var bob = "Yes";//使用分號(hào),可以在一行上寫多行語句 /* 多行注釋 alert("注釋中的代碼不會(huì)被執(zhí)行") */ if (txt=="some string") {//代碼塊 alert(true); }
變量如前所述,,ECMAScript中的變量是用var運(yùn)算符(variable的縮寫)加變量名定義的,,例如: var test = "Hello!World!";
在這個(gè)例子中,聲明了變量test,,并把它的值初始化為"Hello!World!"(字符串),。由于ECMAScript是弱類型的,所以解釋程序會(huì)為test自動(dòng)創(chuàng)建一個(gè)字符串值,,無需明確的類型聲明,。還可以用一個(gè)var語句定義兩個(gè)或多個(gè)變量: var a = "some",b="string"
前面的代碼定義了變量test,初始值為"some",,還定義了變量test2,,初始值為"string"。不過用同一個(gè)var語句定義的變量不必具有相同的類型,,如下所示: var a=12,b="string";
即使a和b屬于兩種不同的數(shù)據(jù)類型,,在ECMAScript中這樣定義也是完全合法的。與Java不同,,ECMAScript中的變量并不一定要初始化(它們是在幕后初始化的,,將在后面討論這一點(diǎn))。因此,,下面一行代碼也是有效的: var a; //只聲明
此外,與Java不同的還有變量可以存放不同類型的值,。這是弱類型變量的優(yōu)勢(shì),。例如,可以把變量初始化為字符串類型的值,,之后把它設(shè)置為數(shù)字值,,如下所示: var test = "string"; alert(test); //.....若干代碼后 test=123;//更改了類型 alert(test);
這段代碼將毫無問題地輸出字符串值和數(shù)字值。但是,如前所述,,使用變量時(shí),,好的編碼習(xí)慣是始終存放相同類型的值。變量名需要遵守兩條簡(jiǎn)單的規(guī)則:
下面的變量名都是合法的: var a; var $a; var $; var _a; var _; var a23;
當(dāng)然,,只是因?yàn)樽兞棵恼Z法正確并不意味著就該使用它們,。變量還應(yīng)遵守一條著名的命名規(guī)則:
下面的表列出了用匈牙利類型標(biāo)記法定義ECMAScript變量使用的前綴:
下面是一些命名示例 var userName="CJ";//駝峰命名方式 var UserName="CJ";//Pascal命名方式 var sUserName="CJ";//匈牙利命名方式
ECMAScript另一個(gè)有趣的方面(也是與大多數(shù)程序設(shè)計(jì)語言的主要區(qū)別)是在使用變量之前不必聲明。例如: var str ="some";
otherStr += str+" "+"string";
alert(otherStr);
在上面的代碼中,,變量otherStr并沒有用var運(yùn)算符定義,,這里只是插入了它,就像已經(jīng)聲明過它,。ECMAScript的解釋程序遇到未聲明過的標(biāo)識(shí)符時(shí),,用該變量名創(chuàng)建一個(gè)全局變量,并將其初始化為指定的值,。這是該語言的便利之處,,不過如果不能緊密跟蹤變量,這樣做也很危險(xiǎn),。最好的習(xí)慣是像使用其他程序設(shè)計(jì)語言一樣,,總是聲明所有變量。 關(guān)鍵字ECMA-262定義了ECMAScript支持的一套關(guān)鍵字(keyword),。這些關(guān)鍵字標(biāo)識(shí)了ECMAScript語句的開頭和/或結(jié)尾,。根據(jù)規(guī)定,關(guān)鍵字是保留的,,不能用作變量名或函數(shù)名,。下面是ECMAScript關(guān)鍵字的完整列表:
如果把關(guān)鍵字用作變量名或函數(shù)名,可能得到諸如“Identifier expected”(應(yīng)該有標(biāo)識(shí)符,缺少標(biāo)識(shí)符)這樣的錯(cuò)誤消息,。 保留字保留字是對(duì)于JavaScript有特殊含義的單詞,。因此,不能將它們用作變量名或函數(shù)名,。也就是說,,它們可能是JavaScript未來版本中的命令?,F(xiàn)在就應(yīng)該避免使用它們,以免在新版本發(fā)布時(shí)不得不修改代碼,。如果將保留字用作變量名或函數(shù)名,,那么除非將來的瀏覽器實(shí)現(xiàn)了該保留字,否則很可能收不到任何錯(cuò)誤消息,。當(dāng)瀏覽器將其實(shí)現(xiàn)后,,該單詞將被看作關(guān)鍵字,如此將出現(xiàn)關(guān)鍵字錯(cuò)誤,。 ECMAScript 3為以后保留的單詞:
ECMAScript 4:ECMAScript4現(xiàn)在還沒有什么實(shí)現(xiàn).ECMAScript4中,下面的不再是保留字了,但也應(yīng)該盡量不要使用它們 boolean final short byte float static char int double long 下面的被加入了保留字 as namespace use false true null is |
|