- JavaScript悟道
- (美)道格拉斯·克羅克福德
- 900字
- 2021-07-28 17:49:44
中文版序
我和JavaScript 的緣分
大學(xué)畢業(yè)以后,我先做了幾年.NET開發(fā),但由于國內(nèi).NET整體生存狀態(tài)不佳,我開始尋求轉(zhuǎn)型,并在2011年幸運地拿到了華為C++程序員的offer。但是讓我沒想到的是,入職后,我連一句C++代碼都還沒來得及寫,就被分配去開發(fā)IPTV機頂盒上的Web應(yīng)用程序。這也是我第一次和JavaScript這門語言親密接觸。
更讓我沒想到的是,這次“意外”影響了我的整個職業(yè)生涯,我從此迷上了JavaScript這門語言。不夸張地說,我在程序員生涯中第一次有了開竅的感覺,以至于在TypeScript如日中天的今天,我仍然偏愛寫JavaScript。
我和死月的緣分
我是通過GitHub認識死月的。當(dāng)時我們分別開發(fā)了RocketMQ的一個客戶端,我是用純JavaScript實現(xiàn)的,而死月是通過Node.js C++ Addon封裝的官方客戶端。我們?yōu)榇擞羞^簡單的交流。不久后,死月加入螞蟻集團體驗技術(shù)部,成了我的同事。我們一起在Node.js基礎(chǔ)技術(shù)領(lǐng)域奮斗了兩年,隨后又一起開發(fā)過Cloud IDE這個產(chǎn)品??傮w來說,我們是有革命感情的。
我看這本書
說實話,我很久沒有關(guān)注過編程語言類的圖書了,要不是死月請我作序,我可能也不會看這本書。但是,翻閱完這本書之后,我還是覺得收獲良多。
首先,和其他編程圖書不一樣的是,作者并沒有死板地教你語法、技巧,而是用多年的經(jīng)驗告訴你JavaScript為什么被設(shè)計成這樣。
● JavaScript的數(shù)值類型為什么只有number一種,而不是像其他語言一樣區(qū)分int、long、float和double等?
● 在JavaScript里,為什么0.1 + 0.2 !== 0.3?
● 為什么變量名中間不能有空格?
● 數(shù)組的下標為什么從0開始,而不是從1開始?
● ……
其次,作者告訴你雖然JavaScript并不完美,甚至有很多讓人抓狂的地方,但是通過避其糟粕,我們可以寫出更好的代碼。
● 如何讓Array.prototype.sort返回穩(wěn)定的排序結(jié)果?
● 如何安全地使用模板字符串?
● 如何避免NaN導(dǎo)致的邏輯判斷錯誤?
● ……
同時,你可以把這本書當(dāng)成一本工具書,里面有不少實用的代碼,可以直接用在日常開發(fā)中。
● 如何解決JavaScript里高精度整數(shù)和浮點數(shù)的運算問題?
● 如何實現(xiàn)一個異步的控制流?
● 如何設(shè)計一個數(shù)據(jù)交換格式?(JSON的起源)
● ……
最后,不得不提一下死月的翻譯。雖然我不清楚他是否準確還原了道格拉斯老爺子的犀利文風(fēng),但中文版里的很多用詞、小細節(jié)甚至腳注都可以體現(xiàn)死月的用心。所以,我把這本書推薦給你,希望它能對你有所幫助!
宗羽(高曉晨、gxcsoccer)
阿里巴巴高級前端專家
2021年5月19日
- 手機安全和可信應(yīng)用開發(fā)指南:TrustZone與OP-TEE技術(shù)詳解
- Redis Applied Design Patterns
- PyTorch自動駕駛視覺感知算法實戰(zhàn)
- Mastering SVG
- Network Automation Cookbook
- PHP網(wǎng)絡(luò)編程學(xué)習(xí)筆記
- 差分進化算法及其高維多目標優(yōu)化應(yīng)用
- PLC應(yīng)用技術(shù)(三菱FX2N系列)
- 軟件測試教程
- Programming with CodeIgniterMVC
- 持續(xù)集成與持續(xù)交付實戰(zhàn):用Jenkins、Travis CI和CircleCI構(gòu)建和發(fā)布大規(guī)模高質(zhì)量軟件
- Unity Character Animation with Mecanim
- AMP:Building Accelerated Mobile Pages
- IPython Interactive Computing and Visualization Cookbook
- Mastering High Performance with Kotlin