猶記得剛剛接觸Java的時候,有一天突然看見了Javascript,第一反應(yīng)就是:這是什么?跟Java這么像,莫非它倆之間有什么不可告人的關(guān)系?
這就得從他們誕生時開始說起:
1994年的時候,網(wǎng)景公司(Netscape)發(fā)布了Navigator瀏覽器0.9版。這是歷史上第一個比較成熟的網(wǎng)絡(luò)瀏覽器,轟動一時。但是,這個版本的瀏覽器只能用來瀏覽,不具備與訪問者互動的能力。因此,網(wǎng)景公司急需一種網(wǎng)頁腳本語言,使得瀏覽器可以與網(wǎng)頁互動。1995年Sun公司將Oak語言改名為Java,正式向市場推出,并且打出了“一次編寫,到處運(yùn)行(Write
once,run
anywhere)”的宣傳口號。網(wǎng)景公司非常看好Java,決定與Sun公司結(jié)成聯(lián)盟。僅一個月后,網(wǎng)景公司做出決定,未來的網(wǎng)頁腳本語言,必須看上去與Java足夠相似,但是比Java簡單。程序員Brendan
Eich被指定為這種“簡化版Java語言”的設(shè)計(jì)師。
但是Brendan
Eich對Java絲毫沒有興趣,用了10天時間就設(shè)計(jì)出了Javascript??傮w的設(shè)計(jì)思路是:(1)借鑒C語言的基本語法;(2)借鑒Java語言的數(shù)據(jù)類型和內(nèi)存管理;(3)借鑒Scheme語言,將函數(shù)提升到“第一等公民”(first
class)的地位;(4)借鑒Self語言,使用基于原型(prototype)的繼承機(jī)制。也就是說,Java script在設(shè)計(jì)時所參考的對象不包括
Java,而包括了像 Self 和 Scheme
這樣的語言,它實(shí)際上是函數(shù)式編程和面向?qū)ο缶幊虄煞N語言風(fēng)格的混合產(chǎn)物。并且javascript最初的名字并不是javascript,而是Livescript,名字中的“Java”是經(jīng)過SUN
Microsystems公司授權(quán)的。
簡單說java和Javascript是兩個不同的語言。
1 語言特點(diǎn):
1.1 弱類型:
Javascript在變量聲明的時候并不嚴(yán)格區(qū)分?jǐn)?shù)據(jù)類型,(var
變量名),不像java那樣嚴(yán)格(類型:變量名)。也就說,Javascript面前一切平等,在他眼里大家都是人,而在java就有所不同,男人、女人、什么的……
基于這個特性,javascript在很多時候會都可以寫的比java簡潔,比如函數(shù)的聲明等。
1.2 動態(tài)語言:
java在定義了一個數(shù)組的長度以后就不能再改變了,但是javascript卻可以。并且java一個數(shù)組只能放同一種類型,但javascript可以在一個數(shù)組內(nèi)加不同數(shù)據(jù)類型的數(shù)據(jù)??梢哉fJava比較死心眼,javascript則比較靈活。
1.3 腳本語言:
Java等后臺語言都是編譯后執(zhí)行的,但是javascript卻是邊編譯邊執(zhí)行。
2 數(shù)據(jù)類型
2.1 基礎(chǔ)數(shù)據(jù)類型:
Java有八大數(shù)據(jù)類型:byte,short,intlong,float,double,char,Boolean。感覺javascript把上面的整理成了三種原始類型:number,string,boolean。另外還有兩個特殊的原始類型是:null和undefined。
2.2 變量
Java:數(shù)據(jù)類型 變量名=值;
Javascript:var 變量名=值;數(shù)組
Java:
類型[] 數(shù)組名=new 類型[數(shù)量];
類型[] 數(shù)組名=new 類型[]{元素1,元素2…};
Javascript:
var 數(shù)組名=[];
var 數(shù)組名=new Array();
3 函數(shù):
Java:返回值類型 函數(shù)名(類型 參數(shù)1,類型 參數(shù)2…){}
Javascript:function 函數(shù)名(參數(shù)1,參數(shù)2…){}
兩者用途
java廣泛應(yīng)用于個人PC、數(shù)據(jù)中心、游戲控制臺、科學(xué)超級計(jì)算機(jī)、移動電話和互聯(lián)網(wǎng)等。
Javascript的用途是:1.嵌入動態(tài)文本于HTML頁面;2.對瀏覽器事件做出響應(yīng);
3.讀寫HTML元素;4.在數(shù)據(jù)被提交到服務(wù)器之前驗(yàn)證數(shù)據(jù);5.檢測訪客的瀏覽器信息; 6.控制cookies,包括創(chuàng)建和修改等。