最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

好玩的vbs特色代碼第3/6頁(yè)

 更新時(shí)間:2007年03月08日 00:00:00   作者:  


vbs 實(shí)用秘籍幾則。

1,在客戶(hù)端的應(yīng)用:

要解瀏覽器對(duì)象模型,認(rèn)為alert,setTimeOut等是js的內(nèi)容是常見(jiàn)錯(cuò)誤認(rèn)識(shí),實(shí)際上那只是window對(duì)象的方法而已。

客戶(hù)端調(diào)用vbs函數(shù)要顯式聲明語(yǔ)言:onclick="vbs:函數(shù)名"
解決類(lèi)似js的
對(duì)象.onclick=function(){}問(wèn)題可以用GetRef函數(shù),
Set object.eventname = GetRef(procname)

2,認(rèn)為vbs沒(méi)有eval,escape等函數(shù)?
實(shí)際上vbs不僅有eval而且還有execute,execScript。試驗(yàn):execute "a=1+1"
<SCRIPT language="vbs" >
   execute "for i=1 to 10 : alert i :next" 
</SCRIPT>

甚至還可以用很短代碼”變態(tài)“的寫(xiě)出:動(dòng)態(tài)產(chǎn)生的n層嵌套的循環(huán),其他語(yǔ)言很難做到。 

<SCRIPT LANGUAGE=vbs>
'10多行代碼實(shí)現(xiàn)n個(gè)數(shù)字全排列 
dim n:n=4
dim S
dim w:w=0
for i=1 to n
S=S & "for i" & i & " =1 to n"  & chr(13)
next
S=S & " if not("
for i=1 to n
for j=i to n
 if i<>j then S=S & "i" & i & "=i"  & j & " or "
next
next
S=left(S,len(S)-4) & ") then  " & chr(13)
for i=1 to n
S=S & "document.write i" & i & chr(13)
next
S=S &  "document.write " & chr(34) & "<br/>" & chr(34) & chr(13) &  "end if" & chr(13)
w=w+1
for i=1 to n
S=S &  "Next" & chr(13)
next
execScript S,"vbs"
</SCRIPT>

3,case的奇怪用法:
  case 1,2可以表示兩種情況,而且case后面可以接變量或者表達(dá)式case a 或者case 1+1這樣用,這點(diǎn)非常靈活,C#和js的case語(yǔ)句是不允許的。

4,還有冒號(hào)和下劃線(xiàn)的用法,我相信這些可能是很多人不常用的。dim a:a=1
for y=0 to 9:for x=0 to 8
   AllQiZi(x,y) =0
next:next
適當(dāng)減少代碼編輯行數(shù),好玩而已,不要到處亂用,不過(guò)還真有一個(gè)哥們把所有代碼寫(xiě)在一行。

5,鋸齒數(shù)組
dim Arr,arrX(),arrY():redim arrX(0):redim arrY(0)
Arr=Array(arrX,arrY)
這個(gè)Arr就是數(shù)組的數(shù)組,里面的內(nèi)容可以是任何變量,任意長(zhǎng)短混合的,object也可以!
Arr(0)(0)實(shí)際上就是arrX(0)

6, 對(duì)上面的arrX 數(shù)組增加新項(xiàng),在js數(shù)組里直接可以增加,還可以排序,因?yàn)閖s沒(méi)有真正的數(shù)組!真正的數(shù)組是不可以在不重新定義的情況下增加項(xiàng)目的。vbs的數(shù)組更接近于真正的數(shù)組,運(yùn)行速度比js的數(shù)組對(duì)象要快很多。但是越接近低層,用起來(lái)也許越不方便。

addArr arrX ,1
addArr arrX ,2
sub addArr(byref Arr,newItem)'一維數(shù)組增加一項(xiàng)
if  IsEmpty(Arr(0)) then 
Arr(0)=newItem
exit sub
else
dim bound:bound=ubound(Arr)
Redim  Preserve  Arr(bound+1)
Arr(bound+1)=newItem
end if
end sub

以下是對(duì)比js和vbs數(shù)組的執(zhí)行速度,只是賦值而已,差別巨大!

 <SCRIPT LANGUAGE=javascript>
var jstest = 10 * 10000 ;
var jsArr = new Array(jstest) ;  
var jsBegin = new Date().getTime();  
for(i=0;i<jstest;i++)
{
  jsArr[i]="任何東西" ;

var jsEnd = new Date().getTime(); 
document.write("js做完這件事需要" + (jsEnd - jsBegin)  + "豪秒<br/>");
</SCRIPT>

<SCRIPT LANGUAGE=vbscript>
dim vbstest : vbstest = 10 * 10000
dim vbsArr() : redim vbsArr(vbstest)
dim vbsBegin : vbsBegin = Timer()
for j =0 to vbstest
vbsArr(j) = "任何東西"
next
dim vbsEnd : vbsEnd = Timer()
document.write "vbs做完這件事需要" & (vbsEnd - vbsBegin) * 1000  & "豪秒<br/>" 
</SCRIPT>

js做完這件事需要2329豪秒
vbs做完這件事需要108.8867豪秒

但是js數(shù)組有sort方法,這是及其方便的,vbs只能自己寫(xiě)排序了,冒泡?太土了吧。

sub sortA(Arr)
'輸入:Arr時(shí)間結(jié)果數(shù)組array
'堆排序,復(fù)雜度n*log(n)/log(2),如果8個(gè)數(shù)就是24次,如果用冒泡是8^2=64次
dim n,i,L,ir,rArr,j
n = ubound(Arr)  
    L = int(n / 2)+1  
    ir = n
    do
        if L > 1 then
            L = L - 1
            rArr = Arr(L)
        else
            rArr = Arr(ir)
            Arr(ir) = Arr(1)
            ir = ir - 1
            if ir = 1 then
              Arr(1) = rArr
              exit sub
            end if
        end if
        i = L
        j = 2 * L  
        while j <= ir
            if j < ir then
                if Arr(j) < Arr(j + 1) then j = j + 1
            end if
            if rArr < Arr(j) then
                Arr(i) = Arr(j)
                i = j
                j = 2 * j 
            else
                j = ir + 1
            end if
        wend
        Arr(i) = rArr
    loop
end sub

相關(guān)文章

最新評(píng)論

元朗区| 巴青县| 铜山县| 梅河口市| 汤原县| 南昌市| 宕昌县| 城口县| 延庆县| 龙南县| 台中县| 汝阳县| 斗六市| 永和县| 安吉县| 梅州市| 潞城市| 都昌县| 永年县| 土默特右旗| 武胜县| 肃宁县| 星座| 嵊州市| 古田县| 太康县| 衡阳市| 长丰县| 博乐市| 丽江市| 家居| 阿瓦提县| 和龙市| 涿鹿县| 云安县| 邯郸县| 隆昌县| 嘉义市| 拜泉县| 始兴县| 合水县|