出版時(shí)間:2012-11 出版社:機(jī)械工業(yè)出版社 作者:成林 頁(yè)數(shù):393
Tag標(biāo)簽:無(wú)
前言
為什么要寫(xiě)這本書(shū)JavaScript是目前比較流行的Web開(kāi)發(fā)語(yǔ)言。隨著移動(dòng)互聯(lián)網(wǎng)、云計(jì)算、Web3.0和客戶端開(kāi)發(fā)概念的升溫,JavaScript語(yǔ)言不斷成熟和普及,并被廣泛應(yīng)用于各種B/S架構(gòu)的項(xiàng)目和不同類型的網(wǎng)站中。對(duì)于JavaScript初學(xué)者、網(wǎng)頁(yè)設(shè)計(jì)愛(ài)好者以及Web應(yīng)用開(kāi)發(fā)者來(lái)說(shuō),熟練掌握J(rèn)avaScript語(yǔ)言是必需的。JavaScript語(yǔ)言的最大優(yōu)勢(shì)在于靈活性好,適應(yīng)能力強(qiáng)。借助各種擴(kuò)展技術(shù)、開(kāi)源庫(kù)或框架,JavaScript能夠完成Web開(kāi)發(fā)中各種復(fù)雜的任務(wù),提升客戶端用戶體驗(yàn)。作為資深的Web開(kāi)發(fā)人員,筆者已經(jīng)習(xí)慣了與高性能的編程語(yǔ)言和硬件打交道,因此一開(kāi)始并沒(méi)有對(duì)JavaScript編程有太高的期望。后來(lái)才發(fā)現(xiàn),JavaScript實(shí)際上是一種優(yōu)秀且高效的編程語(yǔ)言,而且隨著瀏覽器對(duì)其更好的支持、JavaScript語(yǔ)言本身的性能提升,以及新的工具庫(kù)加入,JavaScript不斷變得更好。JavaScript結(jié)合HTML 5等為Web開(kāi)發(fā)人員提供了真正可以發(fā)揮想象力的空間。Node.js等新技術(shù)則為使用JavaScript對(duì)服務(wù)器進(jìn)行編程描繪了非常美好的未來(lái)。但是,在閱讀網(wǎng)上大量散存的JavaScript代碼時(shí),筆者能明顯感覺(jué)到很多用戶正在誤入“歧途”:編寫(xiě)的代碼邏輯不清,結(jié)構(gòu)混亂,缺乏編程人員應(yīng)有的基本素養(yǎng)。這種現(xiàn)狀一般都是用戶輕視JavaScript語(yǔ)言所致。還有很多用戶屬于“半路出家”,誤認(rèn)為JavaScript就是一種“玩具語(yǔ)言”,沒(méi)有以認(rèn)真的態(tài)度對(duì)待和學(xué)習(xí)這門語(yǔ)言,書(shū)寫(xiě)代碼也很隨意。因此,筆者萌生了寫(xiě)一本以提高JavaScript代碼編寫(xiě)質(zhì)量為目的的書(shū)籍,在機(jī)械工業(yè)出版社華章公司楊福川編輯的鼓勵(lì)和指導(dǎo)下,經(jīng)過(guò)近半年的策劃和準(zhǔn)備,終于鼓起勇氣動(dòng)筆了。本書(shū)特色 深。本書(shū)不是一本語(yǔ)法書(shū),它不會(huì)教讀者怎么編寫(xiě)JavaScript代碼,但它會(huì)告訴讀者,為什么Array會(huì)比String類型效率高,閉包的自增是如何實(shí)現(xiàn)的,為什么要避免DOM迭代……不僅僅告訴讀者How(怎么做),而且還告訴讀者Why(為什么要這樣做)。廣。涉及面廣。從編碼規(guī)則到編程思想,從基本語(yǔ)法到系統(tǒng)框架,從函數(shù)式編程到面向?qū)ο缶幊蹋加猩婕?,而且所有的建議都不是“紙上談兵”,都與真實(shí)的場(chǎng)景相結(jié)合。點(diǎn)。從一個(gè)知識(shí)點(diǎn)展開(kāi)講解,比如繼承,這里不提供繼承的解決方案,而是告訴讀者如何根據(jù)需要使用繼承,如何設(shè)置原型,什么時(shí)候該用類繼承,什么時(shí)候該用原型繼承等。精。簡(jiǎn)明扼要。一個(gè)建議就是對(duì)一個(gè)問(wèn)題的解釋和說(shuō)明,以及相關(guān)的解決方案,不拖泥帶水,只針對(duì)一個(gè)問(wèn)題進(jìn)行講解。潔。雖然筆者盡力把每個(gè)知識(shí)點(diǎn)寫(xiě)得生動(dòng),但代碼就是代碼,很多時(shí)候容不得深加工,最直接也就是最簡(jiǎn)潔的。這是一本建議書(shū)。有這樣一本書(shū)籍在手邊,對(duì)如何編寫(xiě)出優(yōu)雅而高效的代碼提供指導(dǎo),將是一件多么愜意的事情??!讀者對(duì)象本書(shū)適合以下讀者閱讀:打算學(xué)習(xí)JavaScript的開(kāi)發(fā)人員。有意提升自己網(wǎng)站水平和Web應(yīng)用程序開(kāi)發(fā)能力的Web開(kāi)發(fā)人員。希望全面深入理解JavaScript語(yǔ)言的初學(xué)者。此外,本書(shū)也適合熟悉下列相關(guān)技術(shù)的讀者閱讀:PHP/ASP/JSP HTML/ XMLCSS 對(duì)于沒(méi)有計(jì)算機(jī)基礎(chǔ)知識(shí)的初學(xué)者,以及只想為網(wǎng)站添加簡(jiǎn)單特效和交互功能的讀者,閱讀本書(shū)前建議先閱讀JavaScript基礎(chǔ)教程類圖書(shū)。如何閱讀本書(shū)本書(shū)將改善JavaScript編程質(zhì)量的188個(gè)建議以9章內(nèi)容呈現(xiàn):第1章 JavaScript語(yǔ)言基礎(chǔ)JavaScript中存在大量的問(wèn)題,這些問(wèn)題會(huì)妨礙讀者編寫(xiě)優(yōu)秀的程序。應(yīng)該避免JavaScript中那些糟糕的用法,因此本章主要就JavaScript語(yǔ)言的一些基本用法中容易犯錯(cuò)誤的地方進(jìn)行說(shuō)明,希望能夠引起讀者的重視。第2章 字符串、正則表達(dá)式和數(shù)組JavaScript程序與字符串操作緊密相連,在進(jìn)行字符串處理時(shí)無(wú)時(shí)無(wú)刻不需要正則表達(dá)式的幫忙。如何提高字符串操 作和正則表達(dá)式運(yùn)行效率是很多開(kāi)發(fā)者最易忽視的問(wèn)題。同時(shí),數(shù)組是所有數(shù)據(jù)序列中運(yùn)算速度最快的一種類型,但很多初學(xué)者忽略了這個(gè)有用的工具。本章將就這3個(gè)技術(shù)話題展開(kāi)討論,通過(guò)閱讀這些內(nèi)容相信讀者能夠提高程序的執(zhí)行效率。第3章 函數(shù)式編程函數(shù)式編程已經(jīng)在實(shí)際應(yīng)用中發(fā)揮了巨大作用,越來(lái)越多的語(yǔ)言不斷地加入對(duì)諸如閉包、匿名函數(shù)等的支持。從某種程度上來(lái)講,函數(shù)式編程正在逐步同化命令式編程。當(dāng)然,用好函數(shù)并非易事,需要“吃透”函數(shù)式編程的本質(zhì),本章幫助讀者解決在函數(shù)式編程中遇到的各種問(wèn)題。第4章 面向?qū)ο缶幊蘆avaScript采用的是以對(duì)象為基礎(chǔ),以函數(shù)為模型,以原型為繼承機(jī)制的開(kāi)發(fā)模式。因此,對(duì)于習(xí)慣于面向?qū)ο箝_(kāi)發(fā)的用戶來(lái)說(shuō),需要適應(yīng)JavaScript語(yǔ)言的靈活性和特殊性。本章將就JavaScript類、對(duì)象、繼承等抽象的問(wèn)題進(jìn)行探索,幫助讀者走出“誤區(qū)”。第5章 DOM編程DOM 操作代價(jià)較高,在富網(wǎng)頁(yè)應(yīng)用中通常是一個(gè)性能瓶頸。因此,在Web開(kāi)發(fā)中,需要特別注意性能問(wèn)題,盡可能地降低性能損耗。本章將為讀者提供一些好的建議,幫助讀者優(yōu)化自己的代碼,讓程序運(yùn)行得更快。第6章 客戶端編程在JavaScript開(kāi)發(fā)中,很多交互效果都需要CSS的配合才能夠?qū)崿F(xiàn),因此CSS的作用不容忽視。本章主要介紹JavaScript+CSS腳本化編程,以及JavaScript事件控制技巧。第7章 數(shù)據(jù)交互和存儲(chǔ)數(shù)據(jù)交互和存儲(chǔ)是Web開(kāi)發(fā)中最重要的,也是最容易被忽視的問(wèn)題,它也是高性能JavaScript 的基石,是提升網(wǎng)站可用性的最大要素。本章主要介紹如何使用JavaScript提升數(shù)據(jù)交互的反應(yīng)速度,以便更好地讓數(shù)據(jù)在前、后臺(tái)傳遞。第8章 JavaScript引擎與兼容性JavaScript兼容性是Web開(kāi)發(fā)的一個(gè)重要問(wèn)題。為了實(shí)現(xiàn)瀏覽器解析的一致性,需要找出不同引擎的分歧點(diǎn)在哪里。本章主要介紹各主流引擎在解析JavaScript代碼時(shí)的分歧,使讀者能夠編寫(xiě)出兼容性很高的代碼。第9章 JavaScript編程規(guī)范和應(yīng)用每種語(yǔ)言都存在缺陷。事實(shí)證明代碼風(fēng)格在編程中是非常重要的,好的風(fēng)格促使代碼能被更好地閱讀,更為關(guān)鍵的是,它能夠提高代碼的執(zhí)行效率。本章主要介紹如何提升JavaScript代碼編寫(xiě)水平,主要包括風(fēng)格、習(xí)慣、效率、協(xié)同性等問(wèn)題,希望能夠給讀者帶來(lái)幫助。本書(shū)的期望 您是否曾經(jīng)為了提供一個(gè)簡(jiǎn)單的應(yīng)用解決方案而徹夜地查看源代碼?您是否曾經(jīng)為了理解某個(gè)框架而冥思苦想、閱覽群書(shū)? 您是否曾經(jīng)為了提升0.1s的DOM性能而對(duì)多種實(shí)現(xiàn)方案進(jìn)行嚴(yán)格測(cè)試和對(duì)比?您是否曾經(jīng)為了避免兼容問(wèn)題而遍尋高手共同“診治”?…… 在學(xué)習(xí)和使用JavaScript的過(guò)程中,您是否在原本可以很快掌握或解決的問(wèn)題上耗費(fèi)了大量的時(shí)間和精力?本書(shū)的很多內(nèi)容都是筆者曾經(jīng)付出代價(jià)換來(lái)的,希望它們能夠給您帶來(lái)一些幫助!代碼是一切的基石,一切都是以編碼實(shí)現(xiàn)為前提的,通過(guò)閱讀本書(shū),期望為讀者帶來(lái)如下幫助:能寫(xiě)出簡(jiǎn)單、清晰、高效的代碼。能架構(gòu)一個(gè)穩(wěn)定、健壯、快捷的應(yīng)用框架。能回答一個(gè)困擾很多人的技術(shù)問(wèn)題。能修復(fù)一個(gè)應(yīng)用開(kāi)發(fā)中遇到的大的Bug。能非常熟悉某個(gè)開(kāi)源產(chǎn)品。能提升客戶端應(yīng)用性能。…… 但是,“工欲善其事,必先利其器”,在“善其事”之前,先檢查“器”是否已經(jīng)磨得足夠鋒利了,是否能夠在前進(jìn)的路上披荊斬棘。無(wú)論將來(lái)的職業(yè)發(fā)展方向是架構(gòu)師、設(shè)計(jì)師、分析師、管理者,還是其他職位,只要還與軟件打交道,就有必要打好技術(shù)基礎(chǔ)。本書(shū)所涉及的全部是核心的JavaScript編程技術(shù),如果能全部理解并付諸實(shí)踐,一定可以夯實(shí)JavaScript編程基礎(chǔ)。
內(nèi)容概要
本書(shū)是Web前端工程師進(jìn)階修煉的必讀之作,將為你通往“JavaScript技術(shù)殿堂”指點(diǎn)迷津!內(nèi)容全部由編寫(xiě)高質(zhì)量的JavaScript代碼的最佳實(shí)踐組成,從基本語(yǔ)法、應(yīng)用架構(gòu)、工具框架、編碼風(fēng)格、編程思想等5大方面對(duì)Web前端工程師遇到的疑難問(wèn)題給出了經(jīng)驗(yàn)性的解決方案,為Web前端工程師如何編寫(xiě)更高質(zhì)量的JavaScript代碼提供了188條極為寶貴的建議。對(duì)于每一個(gè)問(wèn)題,不僅以建議的方式給出了被實(shí)踐證明為十分優(yōu)秀的解決方案,而且還給出了經(jīng)常被誤用或被錯(cuò)誤理解的不好的解決方案,從正反兩個(gè)方面進(jìn)行了分析和對(duì)比,猶如醍醐灌頂,讓人豁然開(kāi)朗。
本書(shū)針對(duì)每個(gè)問(wèn)題所設(shè)計(jì)的應(yīng)用場(chǎng)景都非常典型,給出的建議也都與實(shí)踐緊密結(jié)合。書(shū)中的每一條建議都可能在你的下一行代碼、下一個(gè)應(yīng)用或下一個(gè)項(xiàng)目中被用到,建議你將此書(shū)放置在手邊,隨時(shí)查閱,一定能使你的學(xué)習(xí)和開(kāi)發(fā)工作事半功倍。
作者簡(jiǎn)介
成林,資深Web前端工程師,從事Web前端工作多年,精通CSS、HTML、JavaScript、jQuery和Ajax等Web前端技術(shù),在實(shí)踐中積累了大量的經(jīng)驗(yàn)。推崇Web技術(shù)標(biāo)準(zhǔn),曾經(jīng)在多所高等院校和一些線下技術(shù)沙龍主講Web標(biāo)準(zhǔn)和規(guī)范相關(guān)的課程,曾經(jīng)還參與過(guò)W3C組織的標(biāo)準(zhǔn)化文檔的中文編譯工作。近幾年來(lái),集中精力研究和實(shí)踐CSS
3和 HTML 5前沿技術(shù),在國(guó)內(nèi)是該領(lǐng)域的先驅(qū)者之一。
書(shū)籍目錄
前言
第1章 JavaScript語(yǔ)言基礎(chǔ)
建議1:警惕Unicode亂碼
建議2:正確辨析JavaScript句法中的詞、句和段
建議3:減少全局變量污染
建議4:注意JavaScript數(shù)據(jù)類型的特殊性
建議5:防止JavaScript自動(dòng)插入分號(hào)
建議6:正確處理JavaScript特殊值
建議7:小心保留字的誤用
建議8:謹(jǐn)慎使用運(yùn)算符
建議9:不要信任hasOwnProperty
建議10:謹(jǐn)記對(duì)象非空特性
建議11:慎重使用偽數(shù)組
建議12:避免使用with
建議13:養(yǎng)成優(yōu)化表達(dá)式的思維方式
建議14:不要濫用eval
建議15:避免使用continue
建議16:防止switch貫穿
建議17:塊標(biāo)志并非多余
建議18:比較function語(yǔ)句和function表達(dá)式
建議19:不要使用類型構(gòu)造器
建議20:不要使用new
建議21:推薦提高循環(huán)性能的策略
建議22:少用函數(shù)迭代
建議23:推薦提高條件性能的策略
建議24:優(yōu)化if邏輯
建議25:恰當(dāng)選用if和switch
建議26:小心if嵌套的思維陷阱
建議27:小心if隱藏的Bug
建議28:使用查表法提高條件檢測(cè)的性能
建議29:準(zhǔn)確使用循環(huán)體
建議30:使用遞歸模式
建議31:使用迭代
建議32:使用制表
建議33:優(yōu)化循環(huán)結(jié)構(gòu)
第2章 字符串、正則表達(dá)式和數(shù)組
建議34:字符串是非值操作
建議35:獲取字節(jié)長(zhǎng)度
建議36:警惕字符串連接操作
建議37:推薦使用replace
建議38:正確認(rèn)識(shí)正則表達(dá)式工作機(jī)制
建議39:正確理解正則表達(dá)式回溯
建議40:正確使用正則表達(dá)式分組
建議41:正確使用正則表達(dá)式引用
建議42:用好正則表達(dá)式靜態(tài)值
建議43:使用exec增強(qiáng)正則表達(dá)式功能
建議44:正確使用原子組
建議45:警惕嵌套量詞和回溯失控
建議46:提高正則表達(dá)式執(zhí)行效率
建議47:避免使用正則表達(dá)式的場(chǎng)景
建議48:慎用正則表達(dá)式修剪字符串
建議49:比較數(shù)組與對(duì)象同源特性
建議50:正確檢測(cè)數(shù)組類型
建議51:理解數(shù)組長(zhǎng)度的有限性和無(wú)限性
建議52:建議使用splice刪除數(shù)組
建議53:小心使用數(shù)組維度
建議54:增強(qiáng)數(shù)組排序的sort功能
建議55:不要拘泥于數(shù)字下標(biāo)
建議56:使用arguments模擬重載
第3章 函數(shù)式編程
建議57:禁用Function構(gòu)造函數(shù)
建立58:靈活使用Arguments
建議59:推薦動(dòng)態(tài)調(diào)用函數(shù)
建議60:比較函數(shù)調(diào)用模式
建議61:使用閉包跨域開(kāi)發(fā)
建議62:在循環(huán)體和異步回調(diào)中慎重使用閉包
建議63:比較函數(shù)調(diào)用和引用本質(zhì)
建議64:建議通過(guò)Function擴(kuò)展類型
建議65:比較函數(shù)的惰性求值與非惰性求值
建議66:使用函數(shù)實(shí)現(xiàn)歷史記錄
建議67:套用函數(shù)
建議68:推薦使用鏈?zhǔn)秸Z(yǔ)法
建議69:使用模塊化規(guī)避缺陷
建議70:惰性實(shí)例化
建議71:推薦分支函數(shù)
建議72:惰性載入函數(shù)
建議73:函數(shù)綁定有價(jià)值
建議74:使用高階函數(shù)
建議75:函數(shù)柯里化
建議76:要重視函數(shù)節(jié)流
建議77:推薦作用域安全的構(gòu)造函數(shù)
建議78:正確理解執(zhí)行上下文和作用域鏈
第4章 面向?qū)ο缶幊?br />建議79:參照Object構(gòu)造體系分析prototype機(jī)制
建議80:合理使用原型
建議81:原型域鏈不是作用域鏈
建議82:不要直接檢索對(duì)象屬性值
建議83:使用原型委托
建議84:防止原型反射
建議85:謹(jǐn)慎處理對(duì)象的Scope
建議86:使用面向?qū)ο竽M繼承
建議87:分辨this和function調(diào)用關(guān)系
建議88:this是動(dòng)態(tài)指針,不是靜態(tài)引用
建議89:正確應(yīng)用this
建議90:預(yù)防this誤用的策略
建議91:推薦使用構(gòu)造函數(shù)原型模式定義類
建議92:不建議使用原型繼承
建議93:推薦使用類繼承
建議94:建議使用封裝類繼承
建議95:慎重使用實(shí)例繼承
建議96:避免使用復(fù)制繼承
建議97:推薦使用混合繼承
建議98:比較使用JavaScript多態(tài)、重載和覆蓋
建議99:建議主動(dòng)封裝類
建議100:謹(jǐn)慎使用類的靜態(tài)成員
建議101:比較類的構(gòu)造和析構(gòu)特性
建議102:使用享元類
建議103:使用摻元類
建議104:謹(jǐn)慎使用偽類
建議105:比較單例的兩種模式
第5章 DOM編程
建議106:建議先檢測(cè)瀏覽器對(duì)DOM支持程度
建議107:應(yīng)理清HTML DOM加載流程
建議108:謹(jǐn)慎訪問(wèn)DOM
建議109:比較innerHTML與標(biāo)準(zhǔn)DOM方法
建議110:警惕文檔遍歷中的空格Bug
建議111:克隆節(jié)點(diǎn)比創(chuàng)建節(jié)點(diǎn)更好
建議112:謹(jǐn)慎使用HTML集合
建議113:用局部變量訪問(wèn)集合元素
建議114:使用nextSibling抓取DOM
建議115:實(shí)現(xiàn)DOM原型繼承機(jī)制
建議116:推薦使用CSS選擇器
建議117:減少DOM重繪和重排版次數(shù)
建議118:使用DOM樹(shù)結(jié)構(gòu)托管事件
建議119:使用定時(shí)器優(yōu)化UI 隊(duì)列
建議120:使用定時(shí)器分解任務(wù)
建議121:使用定時(shí)器限時(shí)運(yùn)行代碼
建議122:推薦網(wǎng)頁(yè)工人線程
第6章 客戶端編程
建議123:比較IE和W3C事件流
建議124:設(shè)計(jì)鼠標(biāo)拖放方案
建議125:設(shè)計(jì)鼠標(biāo)指針定位方案
建議126:小心在元素內(nèi)定位鼠標(biāo)指針
建議127:妥善使用DOMContentLoaded事件
建議128:推薦使用beforeunload事件
建議129:自定義事件
建議130:從CSS樣式表中抽取元素尺寸
建議131:慎重使用offsetWidth和offsetHeight
建議132:正確計(jì)算區(qū)域大小
建議133:謹(jǐn)慎計(jì)算滾動(dòng)區(qū)域大小
建議134:避免計(jì)算窗口大小
建議135:正確獲取絕對(duì)位置
建議136:正確獲取相對(duì)位置
第7章 數(shù)據(jù)交互和存儲(chǔ)
建議137:使用隱藏框架實(shí)現(xiàn)異步通信
建議138:使用iframe實(shí)現(xiàn)異步通信
建議139:使用script實(shí)現(xiàn)異步通信
建議140:正確理解JSONP異步通信協(xié)議
建議141:比較常用的服務(wù)器請(qǐng)求方法
建議142:比較常用的服務(wù)器發(fā)送數(shù)據(jù)方法
建議143:避免使用XML格式進(jìn)行通信
建議144:推薦使用JSON格式進(jìn)行通信
建議145:慎重使用HTML格式進(jìn)行通信
建議146:使用自定義格式進(jìn)行通信
建議147:Ajax性能向?qū)?br />建議148:使用本地存儲(chǔ)數(shù)據(jù)
建議149:警惕基于DOM的跨域侵入
建議150:優(yōu)化Ajax開(kāi)發(fā)的最佳實(shí)踐
建議151:數(shù)據(jù)存儲(chǔ)要考慮訪問(wèn)速度
建議152:使用局部變量存儲(chǔ)數(shù)據(jù)
建議153:警惕人為改變作用域鏈
建議154:慎重使用動(dòng)態(tài)作用域
建議155:小心閉包導(dǎo)致內(nèi)存泄漏
建議156:靈活使用Cookie存儲(chǔ)長(zhǎng)信息
建議157:推薦封裝Cookie應(yīng)用接口
第8章 JavaScript引擎與兼容性
建議158:比較主流瀏覽器內(nèi)核解析
建議159:推薦根據(jù)瀏覽器特性進(jìn)行檢測(cè)
建議160:關(guān)注各種引擎對(duì)ECMAScript v3的分歧
建議161:關(guān)注各種引擎對(duì)ECMAScript v3的補(bǔ)充
建議162:關(guān)注各種引擎對(duì)Event解析的分歧
建議163:關(guān)注各種引擎對(duì)DOM解析的分歧
建議164:關(guān)注各種引擎對(duì)CSS渲染的分歧
第9章 JavaScript編程規(guī)范和應(yīng)用
建議165:不要混淆JavaScript與瀏覽器
建議166:掌握J(rèn)avaScript預(yù)編譯過(guò)程
建議167:準(zhǔn)確分析JavaScript執(zhí)行順序
建議168:避免二次評(píng)估
建議169:建議使用直接量
建議170:不要讓JavaScript引擎重復(fù)工作
建議171:使用位操作符執(zhí)行邏輯運(yùn)算
建議172:推薦使用原生方法
建議173:編寫(xiě)無(wú)阻塞JavaScript腳本
建議174:使腳本延遲執(zhí)行
建議175:使用XHR腳本注入
建議176:推薦最優(yōu)化非阻塞模式
建議177:避免深陷作用域訪問(wèn)
建議178:推薦的JavaScript性能調(diào)優(yōu)
建議179:減少DOM操作中的Repaint和Reflow
建議180:提高DOM訪問(wèn)效率
建議181:使用 setTimeout實(shí)現(xiàn)工作線程
建議182:使用 Web Worker
建議183:避免內(nèi)存泄漏
建議184:使用SVG創(chuàng)建動(dòng)態(tài)圖形
建議185:減少對(duì)象成員訪問(wèn)
建議186:推薦100 ms用戶體驗(yàn)
建議187:使用接口解決JavaScript文件沖突
建議188:避免JavaScript與CSS沖突
章節(jié)摘錄
第1章JavaScript語(yǔ)言基礎(chǔ)對(duì)于任何語(yǔ)言來(lái)說(shuō),如何選用代碼的寫(xiě)法和算法最終會(huì)影響到執(zhí)行效率。與其他語(yǔ)言不同,由于JavaScript可用資源有限,所以規(guī)范和優(yōu)化更為重要。代碼結(jié)構(gòu)是執(zhí)行速度的決定因素之一:代碼量少,運(yùn)行速度不一定快;代碼量多,運(yùn)行速度也不一定慢。性能損失與代碼的組織方式及具體問(wèn)題的解決辦法直接相關(guān)。程序通常由很多部分組成,具體表現(xiàn)為函數(shù)、語(yǔ)句和表達(dá)式,它們必須準(zhǔn)確無(wú)誤地按照順序排列。優(yōu)秀的程序應(yīng)該擁有前瞻性的結(jié)構(gòu),可以預(yù)見(jiàn)到未來(lái)所需要的修改。優(yōu)秀的程序也有一種清晰的表達(dá)方式。如果一個(gè)程序被表達(dá)得很好,那么它更容易被理解,進(jìn)而能夠成功地被修改或修復(fù)。JavaScript代碼經(jīng)常被直接發(fā)布,因此它應(yīng)該自始至終具備發(fā)布質(zhì)量。整潔是會(huì)帶來(lái)價(jià)值的,通過(guò)在一個(gè)清晰且始終如一的風(fēng)格下編寫(xiě)的程序會(huì)更易于閱讀。JavaScript的弱類型和過(guò)度寬容特征,沒(méi)有為程序質(zhì)量帶來(lái)安全編譯時(shí)的保證,為了彌補(bǔ)這一點(diǎn),我們應(yīng)該按嚴(yán)格的規(guī)范進(jìn)行編碼。JavaScript包含大量脆弱的或有問(wèn)題的特性,這些會(huì)妨礙編寫(xiě)優(yōu)秀的程序。我們應(yīng)該避免JavaScript中那些糟糕的特性,還應(yīng)該避免那些通常很有用但偶爾有害的特性。這樣的特性讓人既愛(ài)又恨,避免它們就能避免日后開(kāi)發(fā)中潛在的錯(cuò)誤。
編輯推薦
《編寫(xiě)高質(zhì)量代碼:改善JavaScript程序的188個(gè)建議》編輯推薦:從語(yǔ)法、編程思想、編碼規(guī)范、工具方法總結(jié)出188個(gè)編寫(xiě)高質(zhì)量JS代碼的技巧、禁忌和最佳實(shí)踐!
圖書(shū)封面
圖書(shū)標(biāo)簽Tags
無(wú)
評(píng)論、評(píng)分、閱讀與下載
250萬(wàn)本中文圖書(shū)簡(jiǎn)介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書(shū)網(wǎng) 手機(jī)版