隨筆-88  評論-77  文章-48  trackbacks-0
          WML?Script語法基礎(chǔ)

          WML?Script是屬于無限應(yīng)用協(xié)議WAP應(yīng)用層的一部分,使用它可以向WML卡片組和卡片中添加客戶端的處理邏輯,目前最新的版本是1.1版。WML?Script1.1是在歐洲計(jì)算機(jī)制造商協(xié)議會制定的ECMAScript腳本語言的基礎(chǔ)上,經(jīng)過修改和優(yōu)化而指定的。它能夠更好的支持諸如移動電話類的乍帶寬通信設(shè)備,在WML編程中使用WML?Script可以有效的增強(qiáng)客戶端應(yīng)用的靈活性,而且,我們也可以把WML?Script作為一個工具使用,開發(fā)出功能強(qiáng)大的WAP網(wǎng)絡(luò)應(yīng)用和無限網(wǎng)頁。本章我們將詳細(xì)講解WML?Script1.1編程的基礎(chǔ)預(yù)法制時,如基本規(guī)則、變量預(yù)數(shù)據(jù)類型、操作賦予表達(dá)式等。為了敘述上的簡便,以后我們將“WML?Script1.1”簡稱“WMLScript?薄?
          4.1?WML?程序中調(diào)用WML?Script函數(shù)

          經(jīng)過前兩章的學(xué)習(xí),熟悉C語言的讀者可能會認(rèn)識到,WML?的函數(shù)功能、邏輯運(yùn)算功能等都是十分有限的。而WMLScript提供了豐富的函數(shù)功能,我們在WAP應(yīng)用開發(fā)可以使用WMLScript來增強(qiáng)WML編程。因此,WMLScript成為擴(kuò)展WML編程能力的主要開發(fā)工具。

          4.2?WMLScript的主要優(yōu)點(diǎn)及其字節(jié)碼解釋器

          WMLScript具有一套定義好的字節(jié)碼和一個解釋器參考結(jié)構(gòu)。無線網(wǎng)絡(luò)傳輸中WMLScript的數(shù)據(jù)均以二進(jìn)制格式進(jìn)行傳輸,所以,用戶可以使用乍帶寬通信信道,從而能夠保持客戶端手機(jī)只需要最小限度的內(nèi)存。ECMAScript修改后得到的WMLScript能夠更快、更小、更容易的編譯程序?yàn)樽止?jié)碼形式。所有這些特點(diǎn),是WMLScript具備了WML所不能具備的很多優(yōu)點(diǎn)和功能。

          4.2.1?使用WMLScript的主要優(yōu)點(diǎn)

          WMLScript的設(shè)計(jì)宗旨是為WMLScript系統(tǒng)提供一般的腳本處理能力,使用WMLScript我們可以進(jìn)一步補(bǔ)充基于XML的WML語言的編程功能,開發(fā)針對乍帶寬的網(wǎng)絡(luò)應(yīng)用及內(nèi)容,如文本、圖像、選擇列表等,我們可以使用簡單的格式編寫出更靈活和更具可讀性的用戶界面。WMLScript具備的WML所不能具備的優(yōu)點(diǎn)和功能,主要包括如下幾個方面:?(1)檢查用戶輸入的合法性:

          (2)擴(kuò)展用戶瀏覽器的功能,比如允許程序員開發(fā)手機(jī)的電話呼叫、發(fā)送短信息、存儲電話號碼、管理電話簿或SIM卡等;

          (3)生成用戶端的確認(rèn)、提示、警告信息或操作對話框,并使之快速顯示在瀏覽器上;

          (4)在用戶瀏覽器的更改后,能夠?qū)g覽器端的軟件和參數(shù)進(jìn)行擴(kuò)展與配置;

          (5)最大程度克服客戶端的乍帶寬通信連接限制,并提供豐富的程序功能;

          (6)補(bǔ)充WML并使之實(shí)現(xiàn)針對微型移動終端設(shè)備的多種服務(wù),如支持高級用戶界面、增加客戶端智能型、提供用戶瀏覽器外圍功能的訪問能力,以及在服務(wù)器與客戶端瀏覽傳輸數(shù)據(jù)是減少帶寬占用等。

          4.2.2?WMLScript的字節(jié)碼解釋器

          在WMLScript的字節(jié)碼解釋器解釋之前,WMLScript語言編寫的文本格式的程序?qū)⒈皇紫染幾g為二進(jìn)制格式的代碼。編譯時,編譯器通常先將WMLScript程序分成若干個編輯單位,每個單位的程序都包含一定數(shù)量的語句行和WMLScript函數(shù),然后,WMLScript的編譯器將按照這些編譯單位,逐一將WMLScript程序作為輸入內(nèi)容,而把對應(yīng)的字節(jié)碼作為輸出內(nèi)容。當(dāng)用戶通過WAP手機(jī)調(diào)用WMLScript程序時,編譯器的編碼功能即被激活、執(zhí)行。

          4.3?WMLScript基本規(guī)則

          WMLScript在許多基本規(guī)則方面沿用了WML的做法。不過,由于WMLScript是以C語言為藍(lán)本而指定的,所以它的語法特征和C語言非常相像。如果大家對C語言比較熟悉,那么學(xué)習(xí)和掌握這部分內(nèi)容應(yīng)當(dāng)是比較容易的。

          4.3.1?WMLScript與URL

          與WML一樣,WMLScript也沿用了WWW和HTML訪問資源的URL、HTTP等規(guī)范,并擴(kuò)大了URL使用的范圍。在WMLScript中,不僅超鏈接、文件路徑即文件名可以作為URL處理,外部函數(shù)、訪問控制信息等也可以作為URL處理。

          為此,WMLScript采用了WML的變通方法,即改進(jìn)HTML命名資源為值的方式,采用程序段錨點(diǎn)(Fragment?Anchor)的形式來處理資源定位。程序段錨點(diǎn)根據(jù)文檔URL規(guī)則進(jìn)行定義,并按照程序段標(biāo)識符前加井字號(#)的方式書寫。使用程序段錨點(diǎn),WMLScript程序可以在WMLScript編譯單位內(nèi)可任意指定的函數(shù),并可在調(diào)用該函數(shù)的同時傳遞所需的參數(shù)。

          4.3.2?詞法結(jié)構(gòu)

          WMLScript編程中的詞法結(jié)構(gòu)并不復(fù)雜,我們下面就從大小寫敏感、空格、換行、注釋即保留字等方面講解相關(guān)的具體規(guī)則。

          (1)內(nèi)容類型。WMLScript的內(nèi)容類型主要針對文件形式和二進(jìn)制形式兩種情況,類型結(jié)構(gòu)可以在服務(wù)器端進(jìn)行指定,具體形式為:

          文本形式:text/vnd.wap.wmlscript;

          二進(jìn)制形式:application/vnd.wap.wmlscriptc。

          具體指定方法我們在第4章已經(jīng)介紹過,這里不再重述。

          (2)大小寫敏感。WMLScript1.1是一種大小寫敏感的腳本語言。它所設(shè)計(jì)的各種關(guān)鍵字、變量和函數(shù)名都必須合理的使用大小寫。

          (3)空格和換行。一般情況下,WMLScript程序值形式將忽略所有的空格、制表符合換行符等。但如果把這些特殊字符通過代碼進(jìn)行表述,或者作為字符串進(jìn)行處理時,WMLScript將不再忽略它們。了如,字符串\"Oct?28,2001\"中含有空格,該空格在執(zhí)行時就不會被忽略,它與不含空格的字符串\"Oct28,2001\"是不同的。

          (4)注釋。與WML編程一樣,在WMLScript腳本程序中也可以加入注釋內(nèi)容。注釋內(nèi)容不被程序執(zhí)行,且注釋不能嵌套。WMLScript的注釋方法有兩種:

          其一,行注釋。即使用雙斜行號(//)引導(dǎo)以一行內(nèi)容,這一行內(nèi)容全部作為注釋內(nèi)容。如:

          //這是以行注釋,由雙斜杠號開始到結(jié)束都是注釋。

          其二,塊選擇。即以符號“/*”開始,而以符號“/*”結(jié)束的期間所有內(nèi)容都是注釋內(nèi)容。如:

          /*這就是塊注釋,加在中間的內(nèi)容就是注釋內(nèi)容*/

          (5)數(shù)據(jù)類型與直接編碼。WMLScript允許將4種類型的數(shù)據(jù)直接編碼并可嵌套并可嵌如在程序之中。直接編碼的4中數(shù)據(jù)類型為:整數(shù)、浮點(diǎn)數(shù)、字符串和布爾值。另外,“無效性”值也可直接編碼”?1.?整數(shù)。當(dāng)以十進(jìn)制、十六進(jìn)制或八進(jìn)制方式使用整數(shù)時,可對這類整數(shù)進(jìn)行直接編碼。

          編程序時,十進(jìn)制的數(shù)字均不以0開頭,只包含0~9的數(shù)值串;十六進(jìn)制的數(shù)據(jù)以O(shè)X或者Ox開頭,只包含0~9、a~f或者A~F的字符串;八進(jìn)制的數(shù)均以0開頭,只包含0~7的數(shù)字串。

          2.浮點(diǎn)數(shù)。浮點(diǎn)數(shù)通常定義為含有小數(shù)點(diǎn)的數(shù)字,可以包含小數(shù)和指數(shù)部分。浮點(diǎn)數(shù)的形式較多,可以使十進(jìn)制的整數(shù)或浮點(diǎn)數(shù),可以是分?jǐn)?shù),也可以是指數(shù);但一個浮點(diǎn)數(shù)必須至少有一個數(shù)。

          指數(shù)是以e或E開頭,后面跟著一個整數(shù)。指數(shù)是以10為底冪。例如:e0時10的零次冪,例如:e0時10的另次冪,e-2時10的負(fù)2次冪集等于0.01。指數(shù)可以帶符號,正好(+)或者減號(-),它們分別代表是正指數(shù)和負(fù)指數(shù)。

          3.字符串。字符串是指定義在成對的雙引號(\"\")或單引號(‘?’)之間的內(nèi)容。

          由于WMLScript只允許使用成對的雙引號或但引號來定義字符串,所以程序中使用一個單引號或一個雙引號時就會出現(xiàn)編譯錯誤。

          考慮到有些特殊字符不能在字符串中直接顯現(xiàn)出來,所以WMLScript提供了轉(zhuǎn)譯序列來表示這些特殊字符。

          4.布爾型。它只是ture和false兩個數(shù)值,用于表示W(wǎng)MLScript中的“真值”或“假值”。布爾型數(shù)據(jù)可參與異、或等運(yùn)算,具體規(guī)則我們后面介紹。

          5.無效型。也稱為“空類型”,它是WMLScript支持的一個表示無效值的量,以invalid表示。該兩與C語言中的NULL類似。

          4.保留字。WMLScript中定義有一個保留字集合,含有一些表示特殊意義的單詞這些次不能另外定義,也不能最為其他標(biāo)識符。WMLScript中的保留字如下:

          acces?http?agent?if?break?isvalid?continue?meta?header

          div?name?div=?path?domain?return?else?typeof?while

          equiv?url?extern?use?for?user?function?var

          另外,WMLScript還為將來的版本預(yù)留了一些保留字,主要有:

          case?finally?catch?import?class?private?const?public?debugger

          sizeof?default?struct?do?super?enum?switch?export?throw

          extends?try

          WMLScript還有一些沒有使用的保留字:

          delete?null?in?this?lib?void?new?with

          7.標(biāo)識符。WMLScript的標(biāo)識符可以指定或命名3種元素:變量、函數(shù)和標(biāo)注。標(biāo)識符不能以數(shù)字開頭,但能一段下劃線(-)開頭,而且,標(biāo)識符不能是WMLScript的保留字。例如,timeOfDay、speed?、quality、HOME_ADDRESS、_myName、__、varO等都是合法的標(biāo)識符;而以數(shù)字或非短下劃線的特殊符號開頭的字串,以及保留字等都屬于不合法的標(biāo)志賦,如while、for、if、my~name、$sys、123、3piecs、take.this等。

          由于WMLScript是嚴(yán)格區(qū)分大小寫的,所以字母相同但大小寫不同的標(biāo)識符不是同一個標(biāo)識,例如,Work和work就是不同的標(biāo)識符。

          8.名稱空間。WMLScript提供了比較自由的名稱空間,同一標(biāo)識符可以同時用作不同的目的。例如,作為某一函數(shù)名稱的標(biāo)識符,還可以同時用作變量名、函數(shù)參數(shù)、程序標(biāo)注等,使用時他們的屬性或值等并不相互影響。在下面的簡單的例程中,myTest這一標(biāo)識符即用作了函數(shù)名,又用作了變量名、函數(shù)參數(shù)名、函數(shù)參數(shù)名、常量名。顯然,WMLScript的這一特定為我們編寫程序提供了很大的方便。

          4.3.3?WMLScript程序的基本書寫規(guī)則

          WMLScript程序的基本書本寫規(guī)則:

          1.程序由若干語句或函數(shù)組成,函數(shù)有由若干語句組成;

          2.每個完整的語句后面必須加上分號(;),語句關(guān)鍵詞語操作數(shù)之間必須有空間;分號(;)是WMLScript程序的組成部分;

          3.函數(shù)體之間必須使用成對的花括號({?})括起來,而且函數(shù)結(jié)束時在右花括號(})的后面還要加上分號(;);函數(shù)說明部分,如函數(shù)名、函數(shù)類型、函數(shù)參數(shù)等要放在花括號({})的前面;

            4.有些語句可能也需要實(shí)用花括號({?})辦含內(nèi)容,這類語句通常也可以放在函數(shù)中,所以花括號({?})是可以嵌套的。

          當(dāng)然,不同的語句、參數(shù)、變量等元素在聲明和書寫時可能還有一些更細(xì)的要求,具體我們后面介紹這些元素是再專門給出,

          4.4?變量與數(shù)據(jù)類型

          變量即數(shù)據(jù)類型是所有編程語言的概念和組成部分,WMLScript對此也不例外。它對其變量使用方法和數(shù)據(jù)類型定義方法給出了詳細(xì)的規(guī)定。變量通常與某數(shù)據(jù)之相對應(yīng),我們可以給變量賦值,并可在程序執(zhí)行中改變變量的值。下面我們講解WMLScript有關(guān)變量與數(shù)據(jù)類型的詳細(xì)規(guī)定。

          4.4.1變量及其聲明

          變量是在WMLScript腳本程序中具有值的符號名,或說標(biāo)識符。使用變量可以存儲和改變程序中需要的數(shù)據(jù)。與C語言不同的是,WMLScript僅支持函數(shù)內(nèi)定義的變量或用于傳送數(shù)的參變量。

          變量使用前必須進(jìn)行聲明,也就是定義變量,即指定變量的名字。聲明變量的關(guān)鍵字是var,它的后面根上作為變量名的合法的標(biāo)識符,并于最后加上分號(;),即完成一個量的聲明。聲明變量是可以使用var一次聲明多個變量名,相鄰變量之間使用都號(,)間隔。

          一般情況下,我們在給變量命名的時候,都希望能夠使用有意義的變量名。例如,當(dāng)需要使用一個變量表示一本書的價格時,雖然將變量命名為j或book都沒有什么錯誤,但若能命名為bookPrice則會是的WMLScript腳本程序具有更好的可讀性,可以方便編程人員進(jìn)行腳本的編寫和調(diào)試工作。而且,由于WMLScript在給變量命名是不能使用保留字,所以考慮到避免由于一時的疏忽時變量名欲保留字發(fā)生沖突,我們建議使用多個單詞組合在以其作為一個變量的名稱,這是一個比較好的解決辦法。例如,如果要定義一個變量來存儲的、一本書的價格,那我們可以不妨使用bookPrice或者book_price作為變量的名稱,這樣,一方面可以時變量顯得更加清晰,另一方面也可以避免變量與保留字的沖突問題。

          以上只是我們對于變量命名的建議,并不是強(qiáng)制性的要求,用戶完全可以不按照我們的要求來做,只要遵守WMLScript對于標(biāo)識符命名的要求就可以了,但養(yǎng)成良好的編程風(fēng)格不論是對編程人員還是對腳本編寫人員來說,都是十分有意義的。

          4.4.2?變量的作用域與生命期

          一個變量的作用域是指在程序中能夠引用這個變量的一段代碼。由于WMLScript僅支持函數(shù)內(nèi)定義的變量,所以WMLScript變量的作用與通常就是定義它們的那個函數(shù)。在該函數(shù)之外,變量不再發(fā)揮直接作用。

          變量的生命起始值從變量聲明開始到失效為止。變量的生命期也被稱為變量的持久期、存活期。一個變量在定義它的整個函數(shù)內(nèi)都是有效的,函數(shù)內(nèi)的任何語句塊都不會削減變量的生命期或限制變量的作用域。

          如果一個變量未經(jīng)生命就直接使用,或聲明過后再次聲明,都會破壞變量的生命期。前一種情況會導(dǎo)致變量沒有開始聲明期,即沒有“生命”;而后一種情況則導(dǎo)致變量聲明期沒有結(jié)束以前就重新賦予聲明期,即讓它多次“降生”。這都會導(dǎo)致變量無效使用。下面函數(shù)中的變量使用就說明了這一問題:

          function?foo(){

          x=1;//錯誤:變量使用前沒有聲明,改變量還沒有“聲明”。

          var?x,y,z;

          y=x+3;

          var?zd?=invalid

          if(x){

          var(y);//錯誤:這一變量已經(jīng)聲明,這里是重復(fù)聲明。

          };

          };

          4.4.3?變量的使用

          WMLScript的變量只能在定義它的函數(shù)內(nèi)使用。使用時需要聲明變量,聲明變量是可以同時對變量賦值,甚至對變量進(jìn)行運(yùn)算。例如,下面的簡單函數(shù)就說明了變量的這種靈活的使用方法:

          function?ourAge(){

          var?myAge=38;

          var?yourAge=26;

          var?ourAge=myAge+yourAge;

          return?ourAge;

          };

          使用變量時可通過調(diào)用變量名字的形式來實(shí)現(xiàn)。上面例子中的“var?ourAge=myAge+yourAge;”一句,通過調(diào)用變量名,變量ourAge對變量myAge和變量yourAge實(shí)行了求和操作。

          4.4.4?變量類型與數(shù)據(jù)類型

          WMLScript是一種“弱類型”的語言,及其變量沒有確定的類型。WMLScript變量的類型有改變量所賦數(shù)據(jù)的類型決定,并根據(jù)數(shù)據(jù)類型的改變而改變。WMLScript只支持內(nèi)部定義的數(shù)據(jù),因此我們編寫程序是無需指定WMLScript變量的類型,WMLScript減根據(jù)變量而賦數(shù)據(jù)的類型自動進(jìn)行匹配。由于WMLScript的數(shù)據(jù)類型共有整數(shù)、浮點(diǎn)數(shù)、字符串、布爾型和“無效型”五種類型,所以WMLScript變量的類型所能匹配的也就是這五種類型。

          4.4.5?變量值域

          由于變量類型尤其所賦數(shù)據(jù)的類型決定,所以變量值與域其所賦數(shù)據(jù)的可取范圍等價的。下面的我們就給出整數(shù)、浮點(diǎn)數(shù)、字符串和布爾型的區(qū)值范圍,以參照確定應(yīng)類型變量的值域。?1.整數(shù)的范圍。WMLScript支持的整數(shù)是32位的,也就是說整數(shù)的區(qū)值范圍是從2147483648到+2147483647。我們可以在程序運(yùn)行期是用Lang函數(shù)來取得這些值,如:

          Lang.maxInt();?//獲取最大的整數(shù)

          Lang.maxInt();?//獲取最小的整數(shù)

          2.浮點(diǎn)數(shù)的范圍。它是指WMLScript浮點(diǎn)數(shù)的精度所能表示的最小和最大數(shù)值WMLScript支持32為的單精度浮點(diǎn)數(shù),其最大至?xí)r3.40282347E+38,最小的非零的數(shù)是1.17549435E-38或更?。ò凑照5木龋?。

          我們可以使用浮點(diǎn)Float函數(shù)庫在程序運(yùn)行其取得這些數(shù)值:

          Float.maxFloa();?//獲得WMLScript所支持的最大浮點(diǎn)值

          Float.maxFloa();?//獲得WMLScript所支持的最小浮點(diǎn)值
          對于運(yùn)行期出現(xiàn)的一些特殊的浮點(diǎn)數(shù),WMLscript將按照下述規(guī)則處理:

          其一,如果操作結(jié)果是一個不能被單精度浮點(diǎn)數(shù)所能表示的數(shù)值,那么該結(jié)果將被認(rèn)為是invalid,即無效值;

          其二,如果操作結(jié)果發(fā)生下溢出,那么結(jié)果將作為0.0處理:

          其三,負(fù)的零和正的零是完全相等的。

          3.字符串的范圍。任何由于字母、數(shù)字或特殊字符組成的符號串都是WMLScript中定義的有關(guān)字符串的操作或String庫中的函數(shù)控制字符串。

          4.布爾型數(shù)據(jù)的范圍。布爾型數(shù)據(jù)只有ture和flase兩個取值,這也是布爾型變量的兩種數(shù)值。我們可以使用布爾型數(shù)據(jù)取初始化或指定某一變量的數(shù)值,或?qū)⒉紶栔底兞繉懭胍粋€需要布爾值作為參數(shù)的語句。布爾值可以是數(shù)值運(yùn)算的結(jié)果,也可以是邏輯運(yùn)算的結(jié)果。

          下面就是定義布爾型變量并賦初值的例句:

          var?truth=truth;

          var?lie=!truth;


          4.5?操作符與表達(dá)式

          在WMLScript中,表達(dá)式可以把變量、常量與操作符結(jié)合起來,經(jīng)過運(yùn)算能夠產(chǎn)生一定的運(yùn)算結(jié)果。表達(dá)式運(yùn)算后產(chǎn)生的結(jié)果可以是整數(shù)型、浮點(diǎn)數(shù)型、字符串型或布爾型的數(shù)據(jù)。其實(shí),對于表達(dá)式我們并不陌生,例如,1+2就是一個簡單的表達(dá)式。

          WMLScript的表達(dá)式主要有兩種類型。一種是賦值表達(dá)式,即把數(shù)據(jù)賦給變量的一種表達(dá)式,例如,myBook=3,在這個表達(dá)式中,將3?賦給變量myBook,同時,這個表達(dá)式本身也有一個運(yùn)算結(jié)果,那就是3。另外一種是運(yùn)算表達(dá)式,它是指產(chǎn)生一個運(yùn)算結(jié)果而不進(jìn)行賦值操作的表達(dá)式,例如1+2就是一個運(yùn)算表達(dá)式,在這個表達(dá)式運(yùn)算產(chǎn)生的結(jié)果是3,?但這個表達(dá)式并沒有把運(yùn)算結(jié)果賦給變量。

          在表達(dá)式運(yùn)算的過程中,表達(dá)式中操作一個或這兩個數(shù)據(jù)產(chǎn)生運(yùn)算的符號做操作符,被操作符操作的數(shù)據(jù)稱作操作數(shù),在WMLScript中我們會使用到各種操作符,下面就對操作符及有關(guān)的表達(dá)式進(jìn)行詳細(xì)講解。

          4.5.1?賦值操作符

          賦值操作符用于賦值操作,即給變量指定所需的數(shù)值,它能把有操作數(shù)的運(yùn)算結(jié)果給做操作數(shù),最簡單的賦值操作符就是“=”,例如x=2,就是將2賦值給變量x。在如以下幾行語句都是賦值操作:

          var=\"abc\";

          var?b=a;

          b=\"def\";

          賦值操作符不需要指定使用對象,也不會改變賦值操作符右邊變量的數(shù)值。WMLScript的賦值操作符主要包括以下幾種:

          1.=。用于賦值操作,將有操作數(shù)賦給左操作。

          2?+=。將有操作數(shù)與左操作數(shù)進(jìn)行相見運(yùn)算,然后把運(yùn)算結(jié)果賦值給左操作數(shù)。例如,假設(shè)x=3,那么x+=2運(yùn)算后的結(jié)果為x=5。

          +=是比較特別的操作符,因?yàn)樗梢詫蓚€字符串相連,所以+=操作符也可以對字符串進(jìn)行操作,然后將連接后的字符串賦給左操作數(shù)。例如,假設(shè)x=\"Happy\",那么x+=\"new?Year\"運(yùn)算后結(jié)果是x=\"Happy?New?Year\"。

          3.-=。將左操作數(shù)簡取有操作數(shù),然后把運(yùn)算結(jié)果賦值給左操作數(shù)。例如,假設(shè)x=3那么x-=運(yùn)算后的結(jié)果為x=1。

          4*=。將左操作屬于有操作符進(jìn)行相乘運(yùn)算,然后把運(yùn)算結(jié)果賦值給左操作數(shù)。例如,假設(shè)x=6,那么x*=2運(yùn)算后的結(jié)果為x=6。



          5/=。將右操作屬于右操作符進(jìn)行相乘運(yùn)算,然后把運(yùn)算結(jié)果賦值給左操作數(shù)。例如,假設(shè)x=6,那么x*=2運(yùn)算后的結(jié)果為x=6。

          6div=。擁有操作數(shù)處理左操作數(shù),然后把運(yùn)算結(jié)果中的整數(shù)部分賦值給左操作數(shù),例如x=7,那么xdiv=2運(yùn)算后的結(jié)果為x=3。

          7%=。功能是求余數(shù)并賦值,用右操作數(shù)除以做操作數(shù),最后把運(yùn)算得到的余數(shù)值給操作數(shù)。例如,假設(shè)x=7,那么x%=3運(yùn)算后的結(jié)果為x=1。

          8<<=。功能是帶符號左位移并賦值,即將左操作和右操作數(shù)進(jìn)行左位移操作,在將結(jié)果賦給左操作數(shù)。

          9>>=??蓪⒆蟛僮骱陀也僮鬟M(jìn)行右操作進(jìn)行補(bǔ)零右位移操作,在將結(jié)果賦給左操作數(shù)。

          4.5.2?數(shù)學(xué)運(yùn)算操作符

          數(shù)學(xué)運(yùn)算操作符可以對數(shù)值類型的操作數(shù)進(jìn)行運(yùn)算,然后返回一個數(shù)值類型的運(yùn)算結(jié)果。

          1+。這是加運(yùn)算操作等,它對應(yīng)著數(shù)學(xué)運(yùn)算中的加法運(yùn)算,例如表達(dá)式1+2的運(yùn)算結(jié)果為3。

          加操作符還可以對字符串類型的操作數(shù)進(jìn)行運(yùn)算,然后將兩個字符串相連起來作為運(yùn)算

          2-?。即檢操作符,對應(yīng)著速學(xué)運(yùn)算中的減法運(yùn)算,例如表達(dá)式2-1的運(yùn)算結(jié)果為1。

          同時,“-”還是一個取負(fù)操作符,當(dāng)它作為取負(fù)操作符的是一個操作數(shù),取負(fù)操作符的功能使返回操作數(shù)的相反數(shù)。

          3*。這是乘操作符,它對應(yīng)著數(shù)學(xué)運(yùn)算中的乘法運(yùn)算,例如表達(dá)式2*3的運(yùn)算結(jié)果為6。

          4/。即除操作符,對應(yīng)著數(shù)學(xué)運(yùn)算中的除法運(yùn)算,但WMLScript中的除法運(yùn)算有些特別,在WMLScript中,除法運(yùn)算后的結(jié)果是一個浮點(diǎn)數(shù),而不想C語言或者Java語言那樣在整數(shù)進(jìn)行除法運(yùn)算式井運(yùn)算結(jié)果強(qiáng)行轉(zhuǎn)化整數(shù)。在WMLScript中,1/2=0.5,而在Jave中,1/2=0。

          5div。這是整除操作符,對應(yīng)著數(shù)學(xué)運(yùn)算中的整數(shù)運(yùn)算,運(yùn)算后的結(jié)果一個整數(shù),這一點(diǎn)與C語言或者Java語言中的情況是一樣的,可以在整數(shù)進(jìn)行除法運(yùn)算式將運(yùn)算結(jié)果強(qiáng)行轉(zhuǎn)換整數(shù)。

          6%。即取模操作符,它對應(yīng)著數(shù)學(xué)運(yùn)算中的取莫運(yùn)算,也就是將兩個操作相除,返回相除后的余數(shù)。

          取模操作符主要用于判斷一個數(shù)字是否能被另一個數(shù)字整除。

          ((the?Year%3==0))&&(the?Year%100!=0))||(the?Year%400==0)

          其中&&代表的是邏輯運(yùn)算中的與運(yùn)算,||代表的是邏輯運(yùn)算中的或運(yùn)算,關(guān)于邏輯運(yùn)算,我們后面會詳細(xì)介紹。

          7++。這是遞增操作符,它只有一個操作數(shù),操作可以在操作符的左邊,也可以在操作符的右邊,它所完成的運(yùn)算操作是將操作數(shù)加1。假設(shè)操作數(shù)名稱為j,值為2,那么++j加1,然后返回j的值3;而j++則實(shí)現(xiàn)返回j的值2,然后將j加1。

          在循環(huán)中,我們常常會用到遞增操作符的作用正好相反。遞減操作完成的運(yùn)算操作是經(jīng)操作數(shù)減1。例如,假設(shè)操作數(shù)名稱為j,值為2,那么--j先將j減1,然后返回的值1;而j--是先返回j的值2,然后將j減1。

          4.5.3?位操作符

          為操作符在運(yùn)算實(shí)現(xiàn)將操作轉(zhuǎn)化32位的二進(jìn)制數(shù),然后對每個操作數(shù)分別按位進(jìn)行運(yùn)算,運(yùn)算后在將二進(jìn)制的結(jié)果按照標(biāo)準(zhǔn)WMLScript數(shù)值類型返回運(yùn)算結(jié)束。

          1&。這是為與操作符,它可以對兩個操作數(shù)按位進(jìn)行于操作,其運(yùn)算規(guī)則是:

          0&0=0,0&1=0,1&0=0,1&1=1

          2|。這是位或操作符,它可以對兩個操作數(shù)按位進(jìn)行或操作,運(yùn)算規(guī)則是:

          0|0=0?,0|1=1,1|0=1,1|1=1

          3^。這是唯一或操作符,它可以對兩個操作按位進(jìn)行異或操作,其運(yùn)算規(guī)則是:0^0=0,0^1=1,1^0=1,1^1=0

          4~。這是位非操作符,它只有一個操作數(shù),可對操作數(shù)按位進(jìn)行非操作,運(yùn)算規(guī)則是:~0=1,~=0

          5<<。這是左移操作,它可以對左操作數(shù)進(jìn)行向左一位的操作,由操作數(shù)給定了要移動的位數(shù),在移動過程中,左操作數(shù)的最低為補(bǔ)充0。

          6>>。這是右移操作符,它可以對左操作數(shù)進(jìn)行向右移位的操作,由操作數(shù)給定要移動的位數(shù),在移位的過程中,丟棄向右移的位。

          7>>>。這是填0右移操作符,它與右移操作符相似。當(dāng)對證正數(shù)進(jìn)行操作時,它們的效果完全相同;不同之處在于,當(dāng)進(jìn)行負(fù)整數(shù)右移操作時,因?yàn)樨?fù)責(zé)轉(zhuǎn)化為二進(jìn)制后,最高為1,所以在進(jìn)行右移操作后,最高位仍然補(bǔ)充1,而在進(jìn)行填0右移操作時,最高為補(bǔ)充的是0,因此,這是負(fù)數(shù)將轉(zhuǎn)化為正數(shù)。

          4.5.4?邏輯操作符

          邏輯操作符可以將布爾類型的表達(dá)式組合起來,完成邏輯運(yùn)算操作,然后返回邏輯運(yùn)算的結(jié)果--真或假,這樣就可以完成比較復(fù)雜的邏輯判斷工作。邏輯操作共有3種;

          1&&。即邏輯與操作符它只有在兩個操作數(shù)都為ture的時候,返回結(jié)果為ture,在其他情況下,返回結(jié)果為false或者invalid。

          2||。這是或操作符,它在兩個操作數(shù)至少有一個為ture的時候,返回結(jié)果為ture,在其他情況下,返回結(jié)果為false或者invalid。

          3!。即非操作符,它只有一個操作數(shù)。當(dāng)操作數(shù)為ture時,返回結(jié)果為flase;返回結(jié)果為ture.

          4.5.5?比較操作符

          比較操作符可以把操作數(shù)進(jìn)行比較,然后返回一個邏輯值,表明這個比較操作的結(jié)果是否為真。比較操作的操作數(shù)可以是數(shù)值類型或者字符串類型的數(shù)據(jù)。比較操作符也常被稱為關(guān)系運(yùn)算符。

          WMLScript支持的比較操作符共有6種,下面被介紹一下。

          1.?==。即等于操作符,它可以比較兩個操作數(shù)是否相等。如果兩個操作數(shù)相等,則返回ture,否則返回false

          2.?!=。即不等操作符。它可以比較兩個操作數(shù)是否相等。如果兩個操作數(shù)相等,則返回false,否則返回ture。

          3.?>。即大于操作等。其運(yùn)算規(guī)則時,如果左操作數(shù)大于右操作數(shù),則返回ture。
          posted on 2006-04-29 09:44 崛起的程序員 閱讀(189) 評論(0)  編輯  收藏 所屬分類: 載選文章
          主站蜘蛛池模板: 若尔盖县| 巴东县| 乐陵市| 墨江| 武山县| 长白| 深圳市| 江都市| 四会市| 喀什市| 集贤县| 金寨县| 盐城市| 开化县| 东乡县| 南漳县| 利辛县| 繁峙县| 琼结县| 赫章县| 双柏县| 内乡县| 长海县| 大关县| 远安县| 香河县| 岳阳县| 杭锦后旗| 沙田区| 南澳县| 久治县| 沂南县| 略阳县| 崇礼县| 灌南县| 监利县| 蒙自县| 凤翔县| 印江| 麦盖提县| 新密市|