本文來源于網頁設計愛好者web開發社區http://www.html.org.cn收集整理,歡迎訪問。使用vbscript和jscript編寫web應用程序(二)
我心飛揚
6、數據類型
vbscript和jscript的數據類型差別比較大,jscript有6種數據類型:數值型、字符串型、對象型、
布爾型、null和undefined。vbscript雖然只有一種數據類型variant,但其子類型比較豐富。特別
是其對數值類型的精細劃分使得在進行精確的數值運算時顯得比較放心。且配合第2條中所講到的
格式化功能使數據處理更加得心應手。有關這方面的文檔請參閱微軟的msdn。
7、運算符
在運算符方面vbscript和jscript也有一些差別:
例如,vbscript增加了用于字符串連接的算術運算符“&”,用于對象比較的“is”運算符等。
然而jscript提供了比vbscript多得多的運算符,例如遞加遞減運算符“++、--”、一組位運算符
及typeof、delete等雜項運算符等。有關此方面的信息msdn中非常詳細,在此不必復述。
8、字符串處理
vbscript和javascript的字符串處理曾經也是網友們爭論的焦點,它們對字符串的處理有著本質
的不同,我之所以將這部分單獨提出來,也是想引發網友們作一些較為詳細的討論。
在vbscript中字符串只是一種簡單的數據類型而已,并為之提供了非常豐富的字符串處理函數,
例如:
asc,chr,instr,instrrev,join,lcase,ucase,left,right,len,ltrim,rtrim,trim,mid,replace,
space,string,split,strcomp,strreverse
因此有很大一部分網友認為vbscript的字符串處理功能比jscript簡捷、功能強大。
不過我不這么認為。簡捷是有可能的,但談到強大,我覺得jscript功能更為強大。在jscript中,
字符串不僅是一種數據類型,更是一類特殊的對象。作為對象的方法,他不僅提供了上述
vbscript中字符串函數的幾乎所有功能,而且配合正則表達式能夠提供更為強勁的功能。
一種典型的應用就是字符串的模糊搜索,看下面這個例子:
我想把一篇文章中的chen0,chen1,chenk,chen99等可能的拼寫方法替換成joyasp:
var txt = mytextfile.readall();
var re = /chenk?/d?/d?/gi;
txt = txt.replace(re,"joyasp");
這種用法在不能精確地預知被處理的字符串時顯得尤其有用。熟悉unix,c,c++,perl的網友可能
對正則表達式不會陌生,關于這方面的內容請查閱相關文章。
二、在同一個網頁中同時使用兩種語言
在同一個網頁中可以使用不同的腳本編寫語言。這樣做有以下幾個可能的原因: 
a、在一個程序中充分利用各種語言的優點。 
b、可能所面對的現有編碼是用你不熟悉的語言來編寫的。例如,dtc是用jscript編寫的,而
你熟悉的語言卻是vbscript。
大部分情況下,你可以在同一個網頁中混合幾種腳本語言并且它們相互之間能夠配合得很好。
用一種語言編寫的腳本可以調用用另外一種語言編寫的程序并且能夠共享全局變量。不過有時
候還是會出現一點小問題,現在就此說明一下。 
1、當你從vbscript中調用一個jscript函數時,注意在調用過程中要有括號,即使這項函數不
要求設置參數也需如此。例如,一個調用應該像這樣:
returnvalue = call_jscript_function()
如果你忘記了加括號,那么這個函數所返回的值就不是你所希望的值,而是一個包含了函數本
身的vbscript無法解釋的對象。
2、服務器腳本的執行順序
被<% %>定界符括入的命令被稱為主腳本命令,主腳本命令按順序運行,從頭到尾。當然,你可
以在一個服務器腳本中定義一個可調用的程序(函數或者是子程序)。這樣的話,如果需要就
可以隨時調用它們。 
所有的主腳本命令必須用同一種語言來編寫,也就是在網頁前面的<%@ language=xxxxx%>指示
中所指明的腳本語言。因此,在一個主腳本命令中你不能把幾種腳本語言混合起來。 你也許會
說“等一等”。在理論上,把服務器腳本放到<script>單元中是絕對可能的。就像下例一樣: 
<%response.write("i love joyasp!")%>
<script language=vbscript runat=server>
response.write("i love 我心飛揚, too.")
</script> 
但是,這樣你就會被iis asp處理程序的執行順序控制。例如,如果你建立了服務器腳本并且在
iis 4.0中運行它,你會發現執行順序可能是這樣的:
1)非缺省語言的<script>單元腳本
2)主腳本命令
3)缺省語言的<script>單元腳本
以上的順序在很大程度上依賴于activex腳本語言引擎的載入順序,同時iis中的asp處理程序可
能在將來會有所改變。因此,我不不大贊成按這種方式書寫代碼,建議你是只把<script>單元
用于函數或者子程序,或是把它僅僅用于其他與執行順序無關的編碼。
3、客戶端腳本塊的順序
當你在客戶端把幾種語言混合使用時,<script>塊在網頁中出現的順序非常重要,有時候會影
響到它們是否能正常工作。看看下面這個簡單的例子,它是在一個vbscript腳本中調用一個用
jscript編寫的函數:
<script language="vbscript">
' 調用一個jscript function
her = "lucy"
loveher = jsfuncloveher(her)
document.write("絕密情報:" & loveher)
</script>
<script language="javascript">
function jsfuncloveher(arg){
return "white、飛鳥和moslem都想泡" + her + "mm :-)";
}
</script>
它不會起任何作用。說得更明白一點,document.write()會往網頁中寫入一個空的字符串。為
什么?很簡單,在處理vbscript塊時,下面的java script <script>塊還沒有被讀出來,沒有
進行語法分析,因此網頁不能使用它。當瀏覽器處理網頁中的腳本塊時,它是從上往下進行的。 
在這個例子中,只需要調換一下腳本塊的順序就能夠解決這個問題了。不過,事實上這類問題
并不那么常見,在大多數情況下,<script>中包含的函數和子程序只有當整個網頁被全部下載
下來并且所有的單元都可以使用之后才能夠被調用。不過,你還是要記住,網頁是按照一定的
順序來處理的,不同語言的<script>塊是分別處理的。