js和vbs區別比較

來源:互聯網
上載者:User

vbs是出自vb,javascript用的是java的文法,這兒就不說了!

vbs不需要區分大小寫,而js需要區分大小寫,這點相信是很多人討厭js的原因,我以前也是很討厭js的這點,不過學習vbs一段時間後,做網頁都用vbs,發現很多地方不如意,漸漸的就習慣了js的文法。

js也可以像vbs一樣獨立存在:

//js
var fso=new ActiveXObject("scripting.filesystemobject")
fso.createfolder("2/")

'vbs
set fso=createobject("scripting.filesystemobject")
fso.createfolder("2/")

上面兩個的結果都是一樣的,運行後建立一個名為“2”的檔案夾。

像wscript.shell,wscript.Arguments等等對象,js都能調用,不過js用的是 new ActiveXObject,而vbs用的是 set 而已。

Regex,這東西太繁複了,不過Regex確實很強大!
本來是js的東西,vbs也能調用,vbs調用時,還是用了一個 new 的!
Set regEx = New RegExp
不過js用起來比較方便,vbs要麻煩一點。
我用這東西比較機械,還不是很熟練,在這兒就不多說了。

但是,vbs的預設對象,像wscript,js就不能調用了。

還有,集合,vbs和js有點不一樣

'vbs
str="
set fso=createobject("scripting.filesystemobject")
set ds=fso.drives
for each d in ds
str=str+d.driveletter+chr(13)
next

//js
var str=""
var fso=new ActiveXObject("scripting.filesystemobject")
var ds=new Enumerator(fso.drives) //集合的定義
for (; !ds.atEnd(); ds.moveNext())
str=str+ds.item()+"/b"
}
alert(s)

拋開vbs和js的來源和文法不談,其實vbs和js在很多地方還是大同小異的。vbs能做到,js大多數也能做到,不過有的只是類比效果,稍微麻煩一點而已。反之,js能做到的,vbs大多數也能做到。

再說嵌入到html

<script language=vbsript>
'vbs
</script>

<script langage=javascript>
//js
//不用language屬性,或者用javascript加上版本也行,像javascript1.2
//如果一個頁面js,vbs混雜,最好加上language屬性
</script>

vbs的on error resume next很強大,大家覺得很方便,尤其是做網頁時,狀態列不顯示錯誤,呵呵!
其實js也行,直接 window.onerror=return true 就行,和 on error resume next 差不多

vbs在html中,有所謂的“事件驅動”,這玩意兒js就沒有

<script language=vbscript>
funtion object_event
end function
</script>

object_event,即對象加“_”加事件,如window_onload表示表單被載入;a_ondblclick表示a對象被雙擊,不過要事先用id定義個a。

還有,在html中很多東西用js比較方便:

<body onselectstart="return false"><!--禁止選擇-->
oncontextmenu="return fasle" 禁止右鍵菜單
oncopy="return false" 禁止複製

用vbs就麻煩點了。不過也有一些東西,用vbs要比用js方便。

說到這兒,再說說eval函數,js和vbs中都有這個函數,這個函數功能很強大。

vbs中,eval用來檢驗一個運算式是否為真,返回bool值:trur或false。js中也有這個功能。

eval還有一個功能,把字串轉或為對象,(獨立的vbs不行)

<!--js+html-->
<div id=a3 onclick=ch()>單擊改變內容</div>
<script language=javascript>
function ch(){
eval("a"+3).innerText="a3對象的innerText"
}
</script>

'vbs(html中)
for zz=0 to document.links.length-1
document.links(zz).className=""
next
document.links(eval(amount)).className="a"

這段的意思檢測所有的超連結,沒檢測一次並且把第amout個超連結的class屬性改為a,這段是我用html寫的中華詩詞中的一段,能讓所有的超連結中除了被點的那個是一種顏色外,其餘的所有超連結又都是另一種顏色。

不僅如此,eval還能把字串轉化成計時器:setTimeout(),setInterval()

下面的例子也是經常被使用

<span id=a1 onclick=f(this) class=a>1</span>&nbsp;&nbsp;
<span id=a2 onclick=f(this) class=a>2</span>&nbsp;&nbsp;
<span id=a3 onclick=f(this) class=a>3</span>&nbsp;&nbsp;
<span id=a4 onclick=f(this) class=a>4</span>&nbsp;&nbsp;
<span id=a5 onclick=f(this) class=a>5</span>&nbsp;&nbsp;

<style>
.a{color:red;cursor:hand;}
#a1{color:blue;}
</style>

<script>
function f(o){
for (i=1;i<=5;i++){
eval("a"+i).style.color="red"
}
o.style.color="blue"
}
</script>

總之,vbs和js各有所長,哪個方便時就用哪個!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.