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