掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
“世界上只有兩種語言:一種為人抱怨,一種無人使用?!?/p>

創(chuàng)新互聯(lián)建站是一家專注于成都網(wǎng)站制作、做網(wǎng)站、外貿(mào)營銷網(wǎng)站建設與策劃設計,雄縣網(wǎng)站建設哪家好?創(chuàng)新互聯(lián)建站做網(wǎng)站,專注于網(wǎng)站建設十多年,網(wǎng)設計領(lǐng)域的專業(yè)建站公司;建站業(yè)務涵蓋:雄縣等地區(qū)。雄縣做網(wǎng)站價格咨詢:18982081108
——C++語言之父BjarneStroustrup
并不是每個人都愛JavaScript。
時不時就會有人抱怨說JavaScript應由其他語言代替。
理由是:JavaScript有許多地方十分莫名其妙,早該修復了。
由于開發(fā)人員尚未對這些地方進行修復,于是人們想當然地以為JavaScript就是一種蹩腳的語言,根本無法修復。既然如此,就應該用其他語言把它換掉,最好是用吐槽者們最喜歡的語言。
但事實真的如此嗎?
我們?nèi)绾巫叩浇裉?
JavaScript很難稱得上是一種完美的語言,因為它確實有些地方很奇怪。僅僅十日之內(nèi)開發(fā)者就完成了JavaScript的開發(fā)設計并使其更像Java,那么便不得不承受這一后果。
但是沒有一種語言是完美的,自ES6以來,JavaScript已經(jīng)取得了巨大進步,而且還在持續(xù)改進。它從一種僅用于web頁面上制作動畫的“玩具語言”,現(xiàn)已演變?yōu)橐环N嚴格意義上的編程語言,現(xiàn)如今JavaScript運用于各類大型且復雜的web應用程序中。
JavaScript幾乎無處不在,成為目前世界上使用最多的編程語言。
那么,為什么有些開發(fā)人員還在吵著要換掉它?
了解這門語言
人們對JavaScript的諸多吐槽源于他們的無知,他們不了解這門語言,也不愿意真正用心去學習這門語言。
this關(guān)鍵字、原型繼承和不變性缺乏是JavaScript中的三大混淆源。如果開發(fā)人員已經(jīng)習慣了另一種語言,筆者能理解。同樣的,筆者也能理解由此造成的困惑和憤怒。
但這些都并非不可逾越。只要愿意學,JavaScript也沒那么高深莫測。
開發(fā)人員以為用另一種語言換掉JavaScript,便能一勞永逸,雖然這種想法可以理解,但這既不現(xiàn)實,也非真正的解決之策。
“不破壞web”原則
JavaScript、HTML和CSS的首要設計原則是新特征可能永遠不會破壞現(xiàn)有的網(wǎng)站。
這實質(zhì)上是將JavaScript變成了一種只可添加的編程語言:只要不破壞現(xiàn)有的網(wǎng)站,就可以添加特征,而新添加的特征可能永遠不會改變或者移除現(xiàn)有的特征。
這一原則能夠確?,F(xiàn)有網(wǎng)站永不崩潰,即便這些網(wǎng)站創(chuàng)建于幾十年前,第39號技術(shù)專家委員會(TC39) 也會不遺余力堅持這一原則。
這固然是件好事,但也確實給JavaScript增添了負擔,因為特征只能添加到其中而不能更改。
因此,雖然JavaScript中令人混淆的方面在理論上是可以修復的,比如this關(guān)鍵字,但可能會破壞現(xiàn)有的網(wǎng)站,而這些網(wǎng)站在修復之前是可以完美運行的。顯然這是不可接受的,因為它違反了“不破壞web”的原則。
使用另一種語言并非解決之策
理論上可以用一種新的語言取代JavaScript,不過在技術(shù)和邏輯處理上卻十分棘手,且無休無止,這也不無可能。
但是這種語言也需要遵循“不破壞web”的原則,這基本上也把這種語言變成了一種只可添加的語言??赡芤呀?jīng)可以預測到,人們對該種語言的熱情將會下降,很快人們就會聽到同樣的呼聲要求替換掉該種語言。
這個原則對JavaScript的約束,限制了其發(fā)展的方式,這也將適用于任何需要遵守該原則的語言。這就造就了今天的JavaScript,任何一種語言都無法取代它而不受該原則的約束。
在過去20多年里,JavaScript保持著前所未有的向后兼容性,這實際上是一巨大成就。web發(fā)展到今天,JavaScript功不可沒,它該因此而受到喝彩,而不該遭到人們的痛恨。
從頭開始?
希望開發(fā)人員現(xiàn)在已經(jīng)意識到,用另一種語言完全替代JavaScript是不太可能的。但如果真的不想好好學習JavaScript,還可以通過WebAssembly和其他十幾種可編譯成JavaScript的語言來學習。
筆者對TypeScript印象深刻,這是因為它可以將靜態(tài)類型的特征添加到JavaScript和PureScript中,這就好比瀏覽器中的Haskell,可以進行成熟的函數(shù)式編程。
但是額外的編輯步驟一如既往,使學習變得更加復雜,那么問題來了:這樣做是否值得。目前筆者建議使用TypeScript,因為它是JavaScript的一個超集,兩者非常類似。TypeScript也在積極發(fā)展壯大,擁有一個龐大的社區(qū)。
需要花時間去學習它,也可以用這些時間好好學習JavaScript。它沒那么高深莫測,不可學習,一旦掌握它的奇怪之處,就會發(fā)現(xiàn)它是一種非常強大且通用的語言。它并非完美無暇,但卻是必不可少的。
話說回來,沒有一種語言是完美的。
選擇權(quán)在你。

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流