特別說明掰吕,為便于查閱拓哟,文章轉(zhuǎn)自https://github.com/getify/You-Dont-Know-JS
我確信你注意到了斗锭,但是這個系列圖書標題中的“JS”不是一個用來詛咒JavaScript的縮寫枣购,雖然有時我們可能都能看出它是在詛咒這門語言的怪異之處梧疲!
自從web的最早期開始,JavaScript就一直是在我們消費內(nèi)容時驅(qū)動互動體驗的基礎(chǔ)技術(shù)排惨。雖然閃爍的鼠標軌跡和煩人的彈出框可能是JavaScript的起源吭敢,但是在差不多20年以后,JavaScript的技術(shù)和能力已經(jīng)增長了許多個數(shù)量級暮芭,在世界上最廣泛應(yīng)用的軟件平臺 —— web —— 的核心上鹿驼,很少有人懷疑它的重要性。
但作為一種語言辕宏,它一直總是都是一大堆批評的目標畜晰,部分是因為它的遺留問題,但更大程度上是因為它的設(shè)計思想匾效。正如 Brendan Eich 曾經(jīng)說過的舷蟀,就連名字都讓人聯(lián)想它是更成熟的老大哥“Java”的“笨小弟”。但是這個名字只不過是政治上和市場上的巧合面哼。這兩種語言在讀多方面有著廣泛的不同野宜。“JavaScript”與“Java”的聯(lián)系魔策,就和“嘉年華(Carnival)”和“車(Car)”一樣匈子。
因為JavaScript從幾種語言中借用了各種概念和語法慣例,包括高傲的C語言風格的過程式性質(zhì)闯袒,以及微妙的虎敦,不那么明顯的Scheme/Lisp語言風格的函數(shù)式性質(zhì)游岳,所以它對于廣大的開發(fā)者用戶來說極其容易上手。JavaScript的“Hello World”是如此簡單其徙,以至于這門語言在早期接觸時就很吸引人而且很容易讓人適應(yīng)胚迫。
雖然JavaScript也許是最容易上手和使用的語言之一,但與其他的語言相比唾那,它的古怪之處使得牢固掌握這門語言是一個不常見的現(xiàn)象访锻。像C或C++這樣的語言需要相當深度的知識才能寫出完整的程序,而完整的JavaScript程序可以闹获,而且通常都是期犬,僅僅觸及了這門語言的皮毛。
精巧的概念植根于這門語言的深處避诽,而不是簡單地像 看起來 那樣浮于表面龟虎,比如將函數(shù)作為回調(diào)傳遞,它鼓勵JavaScript開發(fā)者就那么直接使用這門語言而不必過于擔心底層發(fā)生了什么沙庐。
它是一種具有廣泛吸引力的鲤妥,簡單、易用的語言拱雏,同時也是一個復(fù)雜和微妙的語言機制集合旭斥,即使是對于經(jīng)驗豐富的JavaScript開發(fā)者來說,不仔細研究就無法 真正懂得古涧。
這就是JavaScript的矛盾之處,這門語言的致命弱點花盐,我們當下面臨的挑戰(zhàn)羡滑。因為JavaScript 可以 不搞懂就使用,所以這門語言經(jīng)常是從沒被搞懂過算芯。
使命
如果每次你在JavaScript中遭遇驚詫和挫折時柒昏,你的反應(yīng)都是像某些人習慣的那樣將它加入黑名單,那么你很快就會將JavaScript的豐富內(nèi)涵掏成一個空殼熙揍。
雖然這部分子集曾經(jīng)被稱為著名的“好的部分”职祷,但我懇求你,親愛的讀者届囚,把它看作是“簡單的部分”有梆,“安全的部分”,甚至是“不完整的部分”意系。
這套 你不懂JavaScript 系列叢書提出了一個相反的挑戰(zhàn):學習并深刻理解JavaScript的 全部泥耀, 甚至是而且特別是“艱難的部分”。
這里蛔添,我們迎面挑戰(zhàn)這種趨勢:JS開發(fā)者總是得過且過地學習“將就夠用”的東西痰催,而從來不強迫他們自己去學習這門語言究竟是為何與如何工作的兜辞。另外,我們摒棄那些當路途艱難時常見的 逃跑 意見夸溶。
我不滿足于逸吵,你也不應(yīng)當滿足于,一看到某些東西 好用 就停下來缝裁,而不真正知道 為什么扫皱。我禮貌地挑戰(zhàn)你沿著這條顛簸的“少有人走的路”走下去,并擁抱JavaScript和它能做的一起压语。有了這些知識啸罢,沒有什么技術(shù),框架胎食,本周最流行的詞兒扰才,是你理解不了的。
這些書的每一本都承擔這門語言的一個具體的核心部分 —— 這些內(nèi)容都是最常被誤解或不被了解的厕怜,并且非常深入衩匣、窮盡地探究它們。你應(yīng)當在讀過之后對你的理解有堅定的信心粥航,不僅僅是理論上的琅捏,而且是對實際的“你需要懂得的”部分。
你 目前 知道的JavaScript可能是被那些沒有完全懂得它的人傳授下來的 部分递雀。那些 JavaScript只是真正的這門語言的影子柄延。你 還 不 真正 懂得JavaScript,但如果你深入這個系列缀程,你會的搜吧。讀下去,我的朋友杨凑。JavaScript在等著你滤奈。
總結(jié)
JavaScript很了不起。很容易學習它的一部分撩满,但是完整地(甚至是 充分地)學習它可就難太多了蜒程。當開發(fā)者們遭遇困惑時,他們經(jīng)常責備這門語言而不是自己對它理解的匱乏伺帘。這些書的目的就是要修正這些情況昭躺,極大地鞏固這門語言中你現(xiàn)在可以,而且 應(yīng)當伪嫁,深刻 懂得 的東西窍仰。
注意:這本書中的許多例子都假定運行在現(xiàn)代化的(以及與未來接軌的)JavaScript引擎環(huán)境中,比如ES6礼殊。一些代碼可能會在老版本的(前ES6)引擎中不能如描述的那樣工作驹吮。