javascript比java難嗎?
JavaScript比Java更難。
原因:JavaScript有太多東西需要你自己去理解,這些東西里有很多要么Java已經(jīng)給你做成范式了,你可以通過學(xué)習(xí)范式來理解;要么就是根本沒有,無需理解。JavaScript需要在語言的基礎(chǔ)上再整理一套方法論,這個(gè)過程會(huì)有不同流派。而Java基本上語言本身已經(jīng)幫你設(shè)定好方法論了,執(zhí)行它就對了。
下面舉點(diǎn)簡單的例子:大學(xué)課程學(xué)習(xí)面向?qū)ο?,一般都用的是class/繼承/虛函數(shù)那一套方法論,Java實(shí)現(xiàn)的面向?qū)ο?,就是基于這套方法論的,所以如果按照大學(xué)課程的學(xué)習(xí)曲線,先學(xué)了C++學(xué)個(gè)一知半解,再學(xué)JAVA,理解Java的面向?qū)ο笫呛苋菀椎?,還去掉了多重繼承這種頭疼的東西,比C++還簡單了。反過來看JS,用的是基于prototype實(shí)現(xiàn)面向?qū)ο螅F(xiàn)在很多JS庫里都有用JS模仿class的實(shí)現(xiàn),方法還挺多,這不是折騰人嗎?上面這個(gè)例子就是“Java已經(jīng)給你做成范式”,你只要按照J(rèn)ava給你的限制去做就行了,不需要再自己去理解了。而用JS去實(shí)現(xiàn)面向?qū)ο?,就需要更多對面向?qū)ο蟮睦斫?,從而知道class/prototype來實(shí)現(xiàn)面向?qū)ο髤^(qū)別在哪。
寫JS需要比較注意不要寫全局變量,這不僅是代碼規(guī)范的問題也是代碼質(zhì)量的問題,于是進(jìn)而引發(fā)了各種變量作用域的問題,很多新手對“函數(shù)作用域”難以理解,這個(gè)函數(shù)作用域又不好用,進(jìn)而到了ES6又弄出一個(gè)let,簡直是把局面又?jǐn)噥y了。
那Java呢?沒有全局變量,無需擔(dān)心。閉包概念也比較弱,變量作用域還是非常清晰的,很好理解。這個(gè)例子就是“Java里根本沒有”,它給你了限制,不按它的做那就是編譯不過?;A(chǔ)設(shè)施方面,Java也有優(yōu)勢,比如Java有官方的包管理機(jī)制,JS還在造(這個(gè)過程中又有流派問題)。Java有static/final/public/private等豐富的修飾詞,你寫什么它就是什么,無需另行約定,也無需奇技淫巧。
總結(jié):JS語言缺失了一些東西,造成需要自己理解或者再造,一來是增加了學(xué)習(xí)難度,二來是引起了流派爭執(zhí)。Java是一門簡單的語言,因?yàn)樗笔У氖荘roductivity的部分,但作為一門編程語言來說它基礎(chǔ)設(shè)施還是比較完善,而且它限制比較緊縮,減少了流派紛爭(把流派紛爭下放到庫和框架的應(yīng)用上面去了)Java難學(xué)的地方還是框架和類庫……Java的最優(yōu)實(shí)踐基本都是圍繞類庫和框架怎么用的,JS的最優(yōu)實(shí)踐還有太多是代碼怎么寫上面。不過現(xiàn)在JS的框架和類庫也不見得少。
【版權(quán)聲明】:本站內(nèi)容來自于與互聯(lián)網(wǎng)(注明原創(chuàng)稿件除外),如文章或圖像侵犯到您的權(quán)益,請及時(shí)告知,我們第一時(shí)間刪除處理!謝謝!