弱類型語(yǔ)言也稱為弱類型定義語(yǔ)言。與強(qiáng)類型定義相反。像vb,php等就屬于弱類型語(yǔ)言·
例如:在vbscript中,可以將字符串 12 和整數(shù) 3 進(jìn)行連接得到字符串 123,然后可以把它看成整數(shù) 123,而不需要顯式轉(zhuǎn)換。
弱類型有時(shí)顯得很方便,有時(shí)卻又極易出錯(cuò)。比如:
var result=5+5; //two numbers
alert(result); //outputs “10”
var result=5+‘5’; // a number and a string
alert(result); //outputs “55”
因此使用弱類型語(yǔ)言也要格外注意數(shù)據(jù)類型防止出錯(cuò)
弱類型語(yǔ)言的優(yōu)缺點(diǎn)有哪些
JavaScript的特點(diǎn)
?。?)。一種解釋性執(zhí)行的腳本語(yǔ)言。
同其他腳本語(yǔ)言一樣,JavaScript也是一種解釋性語(yǔ)言,其提供了一個(gè)非常方便的開(kāi)發(fā)過(guò)程。JavaScript的語(yǔ)法基本結(jié)構(gòu)形式與C、C++、Java十分類似。但在使用前,不像這些語(yǔ)言需要先編譯,而是在程序運(yùn)行過(guò)程中被逐行地解釋。JavaScript與HTML標(biāo)識(shí)結(jié)合在一起,從而方便用戶的使用操作。
?。?)。一種基于對(duì)象的腳本語(yǔ)言。
其也可以被看作是一種面向?qū)ο蟮恼Z(yǔ)言,這意味著JavaScript能運(yùn)用其已經(jīng)創(chuàng)建的對(duì)象。因此,許多功能可以來(lái)自于腳本環(huán)境中對(duì)象的方法與腳本的相互作用。
?。?)。一種簡(jiǎn)單弱類型腳本語(yǔ)言。
其簡(jiǎn)單性主要體現(xiàn)在:首先,JavaScript是一種基于Java基本語(yǔ)句和控制流之上的簡(jiǎn)單而緊湊的設(shè)計(jì),從而對(duì)于使用者學(xué)習(xí)Java或其他C語(yǔ)系的編程語(yǔ)言是一種非常好的過(guò)渡,而對(duì)于具有C語(yǔ)系編程功底的程序員來(lái)說(shuō),JavaScript上手也非常容易;其次,其變量類型是采用弱類型,并未使用嚴(yán)格的數(shù)據(jù)類型。
?。?)。一種相對(duì)安全腳本語(yǔ)言。
JavaScript作為一種安全性語(yǔ)言,不被允許訪問(wèn)本地的硬盤,且不能將數(shù)據(jù)存入服務(wù)器,不允許對(duì)網(wǎng)絡(luò)文檔進(jìn)行修改和刪除,只能通過(guò)瀏覽器實(shí)現(xiàn)信息瀏覽或動(dòng)態(tài)交互。從而有效地防止數(shù)據(jù)的丟失或?qū)ο到y(tǒng)的非法訪問(wèn)。
?。?)。一種事件驅(qū)動(dòng)腳本語(yǔ)言。
JavaScript對(duì)用戶的響應(yīng),是以事件驅(qū)動(dòng)的方式進(jìn)行的。在網(wǎng)頁(yè)(Web Page)中執(zhí)行了某種操作所產(chǎn)生的動(dòng)作,被稱為“事件”(Event)。例如按下鼠標(biāo)、移動(dòng)窗口、選擇菜單等都可以被視為事件。當(dāng)事件發(fā)生后,可能會(huì)引起相應(yīng)的事件響應(yīng),執(zhí)行某些對(duì)應(yīng)的腳本,這種機(jī)制被稱為“事件驅(qū)動(dòng)”。
?。?)。一種跨平臺(tái)性腳本語(yǔ)言。
JavaScript依賴于瀏覽器本身,與操作環(huán)境無(wú)關(guān),只要計(jì)算機(jī)能運(yùn)行瀏覽器,并支持JavaScript的瀏覽器,就可正確執(zhí)行,從而實(shí)現(xiàn)了“編寫一次,走遍天下”的夢(mèng)想。
因此,JavaScript是一種新的描述語(yǔ)言,其可以被嵌入到HTML文件中。JavaScript語(yǔ)言可以做到響應(yīng)使用者的需求事件(例如表單的輸入),而不需要任何的網(wǎng)絡(luò)來(lái)回傳輸資料。所以當(dāng)一位使用者輸入一項(xiàng)資料時(shí),此資料數(shù)據(jù)不用經(jīng)過(guò)傳給服務(wù)器(server)處理再傳回來(lái)的過(guò)程,而直接可以被客戶端(client)的應(yīng)用程序所處理。
JavaScript的優(yōu)缺點(diǎn)
?。?).JavaScript的優(yōu)點(diǎn):
《1》.JavaScript減少網(wǎng)絡(luò)傳輸。
在JavaScript這樣的用戶端腳本語(yǔ)言出現(xiàn)之前,傳統(tǒng)的數(shù)據(jù)提交和驗(yàn)證工作均由用戶端瀏覽器通過(guò)網(wǎng)絡(luò)傳輸?shù)椒?wù)器上進(jìn)行。如果數(shù)據(jù)量很大,這對(duì)于網(wǎng)絡(luò)和服務(wù)器的資源來(lái)說(shuō)實(shí)在是一種無(wú)形的浪費(fèi)。而使用JavaScript就可以在客戶端進(jìn)行數(shù)據(jù)驗(yàn)證。
《2》.JavaScript方便操縱HTML對(duì)象。
JavaScript可以方便地操縱各種頁(yè)面中的對(duì)象,用戶可以使用JavaScript來(lái)控制頁(yè)面中各個(gè)元素的外觀、狀態(tài)甚至運(yùn)行方式,JavaScript可以根據(jù)用戶的需要“定制”瀏覽器,從而使網(wǎng)頁(yè)更加友好。
《3》.JavaScript支持分布式運(yùn)算。
JavaScript可以使多種任務(wù)僅在用戶端就可以完成,而不需要網(wǎng)絡(luò)和服務(wù)器的參與,從而支持分布式的運(yùn)算和處理。
?。?).JavaScript的局限性:
《1》。各瀏覽器廠商對(duì)JavaScript支持程度不同。
目前在互聯(lián)網(wǎng)上有很多瀏覽器,如Firefox、Internet Explorer、Opera等,但每種瀏覽器支持JavaScript的程度是不一樣的,不同的瀏覽器在瀏覽一個(gè)帶有JavaScript腳本的主頁(yè)時(shí),由于對(duì)JavaScript的支持稍有不同,其效果會(huì)有一定的差距,有時(shí)甚至?xí)@示不出來(lái)。
《2》?!癢eb安全性”對(duì)JavaScript一些功能犧牲。
當(dāng)把JavaScript的一個(gè)設(shè)計(jì)目標(biāo)設(shè)定為“Web安全性”時(shí),就需要犧牲JavaScript的一些功能。因此,純粹的JavaScript將不能打開(kāi)、讀寫和保存用戶計(jì)算機(jī)上的文件。其有權(quán)訪問(wèn)的唯一信息就是該JavaScript所嵌入的那個(gè)Web主頁(yè)中的信息,簡(jiǎn)言之,JavaScript將只存在于它自己的小小世界—Web主頁(yè)里。
常用JS框架介紹及其優(yōu)缺點(diǎn)
?。?).Jquery
《1》。介紹
JQuery 是一款同 prototype 一樣優(yōu)秀 js 開(kāi)發(fā)庫(kù)類,特別是對(duì) css 和 XPath 的支持,使我們寫 js 變得更加方便!如果你不是個(gè) js 高手又想寫出優(yōu)秀的 js 效果,那么 JQuery 可以幫你達(dá)到目的!并且簡(jiǎn)介的語(yǔ)法和高的效率一直是jQuery追求的目標(biāo)。
《2》。優(yōu)點(diǎn):注重簡(jiǎn)介和高效,js 效果有 yui-ext 的選擇,因?yàn)?yui-ext 重用了很多 jQuery 的函數(shù)
《3》。缺點(diǎn):據(jù)說(shuō)太嫩,歷史不悠久。
?。?).EXT
《1》。介紹
基于 Yahoo UI 的擴(kuò)展包 yui-ext 是具有 CS 風(fēng)格的 Web 用戶界面組件,能實(shí)現(xiàn)復(fù)雜的 Layout 布局,界面效果可以和 backbase 媲美,而且使用純 javascript 代碼開(kāi)發(fā)。真正的可編輯的表格 Edit Grid,支持 XML 和 Json 數(shù)據(jù)類型,直接可以遷入 Grid。許多組件實(shí)現(xiàn)了對(duì)數(shù)據(jù)源的支持,例如動(dòng)態(tài)的布局,可編輯的表格控件,動(dòng)態(tài)加載的 Tree 控件、動(dòng)態(tài)拖拽效果等等。從 1.0 beta 版開(kāi)始同 Jquery 合作,推出基于 jQuery 的 Ext 1.0,提供了更多有趣的功能。
《2》。優(yōu)點(diǎn):結(jié)構(gòu)化,類似于 java 的結(jié)構(gòu),清晰明了,底層用到了 Jquery 的一些函數(shù),使整合使用有了選擇,最重要的一點(diǎn)是界面太讓讓人震撼了。
《3》。缺點(diǎn):太過(guò)復(fù)雜,整個(gè)界面的構(gòu)造過(guò)于復(fù)雜。
?。?).Dojo
《1》。介紹
Dojo 是目前最為強(qiáng)大的JS框架,它在自己的 Wiki 上給自己下了一個(gè)定義,Dojo 是一個(gè)用 JavaScript 編寫的開(kāi)源的DHTML工具箱。Dojo 很想做一個(gè)“大一統(tǒng)”的工具箱,不僅僅是瀏覽器層面的,野心還是很大的。Dojo 包括 Ajax、Browser、Event、Widget 等跨瀏覽器 API,包括了 JS 本身的語(yǔ)言擴(kuò)展,以及各個(gè)方面的工具類庫(kù),和比較完善的 UI 組件庫(kù),也被廣泛應(yīng)用在很多項(xiàng)目中,他的 UI 組件的特點(diǎn)是通過(guò)給 HTML 標(biāo)簽增加 TAG 的方式進(jìn)行擴(kuò)展,而不是通過(guò)寫 JS 來(lái)生成,Dojo 的 API 模仿 Java 類庫(kù)的組織方式。用 Dojo 寫 Web OS 可謂非常方便。Dojo 現(xiàn)在已經(jīng) 4.0 了,Dojo 強(qiáng)大的地方在于界面和特效的封裝,可以讓開(kāi)發(fā)者快速構(gòu)建一些兼容標(biāo)準(zhǔn)的界面。
《1》。優(yōu)點(diǎn):庫(kù)相當(dāng)完善,發(fā)展時(shí)間也比較長(zhǎng),功能強(qiáng)大,據(jù)說(shuō)利用 Dojo 的 io.bind() 可以實(shí)現(xiàn) comet 看見(jiàn)其功能強(qiáng)大非一般,得到 IBM 和 SUN 的支持。
《2》。缺點(diǎn):文件體積比較大,200多KB,初次下載相當(dāng)慢,此外,Dojo 的類庫(kù)使用顯得不是那么易用,JS語(yǔ)法增強(qiáng)方面不如 Prototype
?。?).Prototype
《1》。介紹
它是一個(gè)非常優(yōu)雅的 JS 庫(kù),定義了 JS 的面向?qū)ο髷U(kuò)展,DOM 操作API,事件等等,以 Prototype 為核心,形成了一個(gè)外圍的各種各樣的 JS 擴(kuò)展庫(kù),是相當(dāng)有前途的 JS 底層框架,值得推薦,感覺(jué)也是現(xiàn)實(shí)中應(yīng)用最廣的庫(kù)類(RoR 集成的 AJAX JS 庫(kù)),之上還有 Scriptaculous 實(shí)現(xiàn)一些JS組件功能和效果。
《2》。優(yōu)點(diǎn):基本底層,易學(xué)易用,甚至是其他一些js特效開(kāi)發(fā)包的底層,體積算是最小的了。
《3》。缺點(diǎn):如果說(shuō)缺點(diǎn),可能就是功能是他的弱項(xiàng)
?。?).dScriptaculous
《1》。介紹
Scriptaculous 是基于prototype.js 框架的 JS 效果。包含了 6 個(gè) js 文件,不同的文件對(duì)應(yīng)不同的 js 效果,所以說(shuō),如果底層用 prototype 的話,做js效果用 Scriptaculous 那是再合適不過(guò)的了,連大名鼎鼎的 digg 都在用他,可見(jiàn)不一般
《2》。優(yōu)點(diǎn):基于prototype 是最大的優(yōu)點(diǎn),由于使用 prototype 的廣泛性,無(wú)疑對(duì)用戶書錦上添花。
《3》。缺點(diǎn):剛剛興起,需要時(shí)間的磨練
?。?).Mochikit
《1》。介紹
MochiKit 自稱為一個(gè)輕量級(jí)的 js 框架。MochiKit 主要受到 Python 和 Python 標(biāo)準(zhǔn)庫(kù)提供的很多便利之處的啟發(fā),另外還緩解了瀏覽器版本之間的不一致性。其中的 MochiKit.DOM 尤其方便,能夠以比原始 JavaScript 更友好的方式處理 DOM 對(duì)象。MochiKit.DOM 大部分都是針對(duì) XHTML 文檔定制的,如果與 MochiKit 和 Ajax 結(jié)合在一起,使用 XHTML 包裝的微格式尤其方便。Mochikit 可以直接對(duì)字符串或者數(shù)字格式化輸出,比較實(shí)用和方便。它還有自己的 js 代碼解釋器
《2》。優(yōu)點(diǎn):MochiKit.DOM 這部分很實(shí)用,簡(jiǎn)介也是很突出的
《3》。缺點(diǎn):輕量級(jí)的缺點(diǎn)
?。?).Mootools
《1》。介紹
MooTools 是一個(gè)簡(jiǎn)潔,模塊化,面向?qū)ο蟮?JavaScript 框架。它能夠幫助你更快,更簡(jiǎn)單地編寫可擴(kuò)展和兼容性強(qiáng)的 JavaScript 代碼。Mootools 跟 prototypejs 相類似,語(yǔ)法幾乎一樣。但它提供的功能要比 prototypejs 多,而且更強(qiáng)大。比如增加了動(dòng)畫特效、拖放操作等等。
《2》。優(yōu)點(diǎn):可以定制自己所需要的功能,可以說(shuō)是 prototypejs 的增強(qiáng)版。
《3》。缺點(diǎn):不大不小,具體應(yīng)用具體分析。
(8).Moo.fx
《1》。介紹
Moo.fx是 一個(gè)超級(jí)輕量級(jí)的 javascript 特效庫(kù)(7k),能夠與 prototype.js 或mootools 框架一起使用。它非???、易于使用、跨瀏覽器、符合標(biāo)準(zhǔn),提供控制和修改任何 HTML 元素的 CSS 屬性,包括顏色。它內(nèi)置檢查器能夠防止用戶通過(guò)多次或瘋狂點(diǎn)擊來(lái)破壞效果。moo.fx整體采用模塊化設(shè)計(jì),所以可以在它的基礎(chǔ)上開(kāi)發(fā)你需要的任何特效。
《2》。優(yōu)點(diǎn):小塊頭有大能耐
《3》。缺點(diǎn):這么小了,已經(jīng)不錯(cuò)了
評(píng)論
查看更多