-
腳本應該放在頁面元素程式碼之後
無論目前JavaScript 程式碼是內嵌還是在外鏈檔案中,頁面的下載和渲染都必須停下來等待腳本執行完成。 JavaScript 執行過程耗時越久,瀏覽器等待回應使用者輸入的時間就越長。瀏覽器在下載和執行腳本時出現阻塞的原因在於,腳本可能會改變頁面或JavaScript的命名空間,它們會對後面頁面內容造成影響。
-
避免全域尋找
function search() { //当我要使用当前页面地址和主机域名 alert(window.location.href + window.location.host); } //最好的方式是如下这样 先用一个简单变量保存起来 function search() { var location = window.location; alert(location.href + location.host); }
-
#類型轉換
般最好用”" + 1来将数字转换成字符串,虽然看起来比较丑一点,但事实上这个效率是最高的,性能上来说:
(“” + ) > String() > .toString() > new String() "
" var myVar = "3.14159", str = "" + myVar, // to string num=+myVar, // to number i_int = ~ ~myVar, // to integer f_float = 1 * myVar, // to float b_bool = !!myVar, /* to boolean - any string with length and any number except 0 are true */ array = [myVar]; // to array "
-
多個型別宣告
在JavaScript中所有變數都可以使用單一var語句來聲明,這樣就是組合在一起的語句,以減少整個腳本的執行時間,就如上面程式碼一樣,上面程式碼格式也挺規範,讓人一看就明了。
#透過範本元素clone,替代createElement - 很多人喜歡在JavaScript中使用document.write來為頁面產生內容。容器元素,例如指定一個p或span,並設定他們的innerHTML來將自己的HTML程式碼插入頁面中。有效性,2:字串操作效率低,所以應該是用document.createElement()方法,而如果文件中存在現成的樣板節點,應該是用cloneNode()方法,因為使用createElement()方法之後,你需要設定多次元素的屬性,使用cloneNode()則可以減少屬性的設定次數-同樣如果需要建立很多元素,應該先準備一個樣板節點。套件閉包的案例
var frag = document.createDocumentFragment(); for (var i = 0; i < 1000; i++) { var el = document.createElement('p'); el.innerHTML = i; frag.appendChild(el); } document.body.appendChild(frag); //替换为: var frag = document.createDocumentFragment(); var pEl = document.getElementsByTagName('p')[0]; for (var i = 0; i < 1000; i++) { var el = pEl.cloneNode(false); el.innerHTML = i; frag.appendChild(el); } document.body.appendChild(frag);
- 在循環時將控制條件和控制變數合併起來
document.getElementById('foo').onclick = function(ev) { };
當我們要添加什麼東西到這個在循環之前,我們發現有幾個操作在每次迭代都會出現。 避免與null進行比較 -
由於JavaScript是弱類型的,所以它不會做任何的自動類型檢查,所以如果看到與null進行比較的程式碼,請嘗試使用以下技術替換:
1、如果值應為一個參考類型,使用instanceof操作符檢查其建構函式2、如果值應為一個基本型別,作用typeof檢查其型別3、如果是希望對象包含某個特定的方法名,則使用typeof運算元確保指定名字的方法存在於物件上
#尊重物件的所有權 -
因為JavaScript可以在任何時候修改任意對象,這樣就可以以不可預期的方式覆寫預設的行為,所以如果你不負責維護某個對象,它的對像或者它的方法,那麼你就不要對它進行修改,具體一點就是說:
1、不要為實例或原型添加屬性2、不要為實例或原型添加方法3、不要重定義已經存在的方法4、不要重複定義其它團隊成員已經實現的方法,永遠不要修改不是由你所有的對象,你可以透過以下方式為對象創建新的功能: 1、創建包含所需功能的新對象,並用它與相關對象進行交互2、創建自定義類型,繼承需要進行修改的類型,然後可以為自訂類型新增額外功能
使用直接量 for ( var x = 0; x < 10; x++ ) {};
縮短否定偵測
var x = 9; do { } while( x-- );
釋放javascript物件随着实例化对象数量的增加,内存消耗会越来越大。所以应当及时释放对对象的引用,让GC能够回收这些内存控件。 对象:obj = null 对象属性:delete obj.myproperty 数组item:使用数组的splice方法释放数组中不用的item
-
巧用||和&&布尔运算符
function eventHandler(e) { if (!e) e = window.event; } //可以替换为: function eventHandler(e) { e = e || window.event; } if (myobj) { doSomething(myobj); } //可以替换为: myobj && doSomething(myobj);
switch语句相对if较快
每条语句末尾须加分号
相关推荐:
以上是JS效能最佳化技巧實例分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!

JavaScript核心數據類型在瀏覽器和Node.js中一致,但處理方式和額外類型有所不同。 1)全局對像在瀏覽器中為window,在Node.js中為global。 2)Node.js獨有Buffer對象,用於處理二進制數據。 3)性能和時間處理在兩者間也有差異,需根據環境調整代碼。

JavaScriptusestwotypesofcomments:single-line(//)andmulti-line(//).1)Use//forquicknotesorsingle-lineexplanations.2)Use//forlongerexplanationsorcommentingoutblocksofcode.Commentsshouldexplainthe'why',notthe'what',andbeplacedabovetherelevantcodeforclari

Python和JavaScript的主要區別在於類型系統和應用場景。 1.Python使用動態類型,適合科學計算和數據分析。 2.JavaScript採用弱類型,廣泛用於前端和全棧開發。兩者在異步編程和性能優化上各有優勢,選擇時應根據項目需求決定。

選擇Python還是JavaScript取決於項目類型:1)數據科學和自動化任務選擇Python;2)前端和全棧開發選擇JavaScript。 Python因其在數據處理和自動化方面的強大庫而備受青睞,而JavaScript則因其在網頁交互和全棧開發中的優勢而不可或缺。

Python和JavaScript各有優勢,選擇取決於項目需求和個人偏好。 1.Python易學,語法簡潔,適用於數據科學和後端開發,但執行速度較慢。 2.JavaScript在前端開發中無處不在,異步編程能力強,Node.js使其適用於全棧開發,但語法可能複雜且易出錯。

javascriptisnotbuiltoncorc; sanInterpretedlanguagethatrunsonenginesoftenwritteninc.1)JavascriptwasdesignedAsignedAsalightWeight,drackendedlanguageforwebbrowsers.2)Enginesevolvedfromsimpleterterpretpretpretpretpreterterpretpretpretpretpretpretpretpretpretcompilerers,典型地,替代品。

JavaScript可用於前端和後端開發。前端通過DOM操作增強用戶體驗,後端通過Node.js處理服務器任務。 1.前端示例:改變網頁文本內容。 2.後端示例:創建Node.js服務器。

選擇Python還是JavaScript應基於職業發展、學習曲線和生態系統:1)職業發展:Python適合數據科學和後端開發,JavaScript適合前端和全棧開發。 2)學習曲線:Python語法簡潔,適合初學者;JavaScript語法靈活。 3)生態系統:Python有豐富的科學計算庫,JavaScript有強大的前端框架。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

記事本++7.3.1
好用且免費的程式碼編輯器

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具