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