官术网_书友最值得收藏!

中文版序

大學(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日

主站蜘蛛池模板: 建阳市| 榕江县| 科技| 门头沟区| 永城市| 巴马| 林州市| 鄂温| 农安县| 沈丘县| 新丰县| 汉阴县| 化隆| 布尔津县| 绥滨县| 襄樊市| 麻江县| 中卫市| 华亭县| 盈江县| 衡南县| 宝鸡市| 淳化县| 枝江市| 呼伦贝尔市| 湖州市| 历史| 涟源市| 芮城县| 隆林| 西乌珠穆沁旗| 托克逊县| 江永县| 万全县| 贵港市| 陈巴尔虎旗| 尼勒克县| 武义县| 通海县| 兴国县| 禄丰县|