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