分享9點個人認為比較重要的javascript 程式設計技巧_javascript技巧
1.巧用判斷:
在js中,NaN,undefined,Null,0,"" 在轉換為bool的時候,是false,所以,可以這樣寫。
if(!obj) {}
表示一個物件如果為false的時候所做的事情,因為如果obj為以上任何一個,那麼就是false,!false即是true,這樣,就不需要if(obj==null || obj == NaN ....)。
2.巧用運算子:
有一個很經典的技巧,得到時間戳記。
var dataspan = new Date()*1;
我們知道,js是弱型別語言,Date()會傳回一個表示時間的字串,用這個字串進行算術運算,將會得到轉換,也就是結果的時間戳。
3.巧用正規表示式:
/.a/ig.exec('xsas')
//相當於建立一個reg對象,呼叫了exec方法,當然也能呼叫其他的方法,如:test(),match()等。
4.取陣列最大值與最小值:
var values = [1,2,3,40,23];
var max = Math.Max.apply(Math,values);
呼叫Max.apply,設定物件的為Math,然後傳遞一個Values,就能確定最大值。
5.記憶體最佳化:
function p(){this.p='moersing'}; var p1 = new p();
p1.xx
p1.xx
.......
p1=null; //執行完作業之後,最後手動解除p1的引用。
6.最受歡迎的創建物件方式(原型模式):
function c(){
this.name ='moersing';
this.age=18;
this.books=['javascript develop','C# develop'];
}
c.prototype={
displayBookName:function (){
foreach(var t in this.books)
{
document.write(this.books[t]);
}
}
}
原型建構模式的最大缺點在於引用型別的共享,所以,將引用型別定義在建構子中,而將通用方法定義在原型中,使用this引用。
7.區塊級作用域與私有變數
在javascript中,沒有區塊級作用域和私有變數這一說,但是,利用一些特性,則能模仿這些效果。
7.1塊級作用域:
(function(){
//區塊級作用域
}
)();
匿名函數外面加上一個括號,我管它叫"函數標準化",也就是說,可以像標準函數那樣調用,如:
var name =function(){};
(name)();//一般不會這麼寫;
這麼做的好處就是,在()外部無法存取到函數中變量,也就成了塊級作用域,這種方式一般用在編寫插件的時候,不會再全局(global)中添加額外的變量,而且,在函數執行完畢之後,其內部定義的變數就被銷毀了,所以,也不會有閉包特性存在的問題。
7.2私有變數:
function private()
{
var name = 'moersing';
this.getName = function(){
return this.name;
}
}
私有變數其實就是利用函數的作用域作為限制(外部無法存取),然後定義一個方法,這個方法傳回對應的變量,僅此而已。
8.DOM之NodeList:
nodeList是動態的元素,這意味著,在文件中加入任何元素,nodeList都會即時更新,如:
var alldiv = document.getElementsByTagName('div');
for(var i=0;i
var div = document.createElement('div');
div.innerHTML= i.toString();
document.body.appendChild(div);
}
這段程式碼會造成無限循環,在循環裡面創建了一個div,然後appendChild方法將其添加到body中,那麼,所有alldiv會立即就更新,所以,i
var alldiv = document.getElementsByTagName('div');
var len,i;
for(i=0,len=alldiv.length;i
var div = document.createElement('div');
div.innerHTML= i.toString();
document.body.appendChild(div);
}
這裡建議:最好不要頻繁的對NodeList操作,因為每次操作都會執行一次DOM樹的查詢。
除了以上介紹的方法外,HTML5 新加入的API(selector API Level1)也能解決這個問題,它類似C#的linq及時查詢,至於什麼是linq及時查詢,以後我會更新blog,敬請關注:
var allDiv= document.querySelectorAll('div');
for(var i=0;i
var div = document.createElement('div');
div.innerHTML= i.toString();
document.body.appendChild(div);
}
querySelectorAll需要一個參數,一個CSS選擇器,類似jquery中的$(),它回傳的NodeList是一個及時的,非動態的DOM集合。
另外還有一個querySelector,回傳符合的第一個元素,有關HTML5 API 詳 見
http://www.w3.org/standards/techs/dom#w3c_all
或
https://developer.mozilla.org/zh-CN/docs/Web/API
另外,自己也在醞釀一篇blog,專門講HTML5 API的,敬請關注。
9.DOM效能:
不要做這種傻事(我做過。。。)
for(var i=0;i {
document.querySelector('ul').innerHTML="
}
給物件的innerHTML賦值,會呼叫內建的C 解析器解析這個字串,雖然速度很快,但是最好不要這樣操作,會有一定的效能流失。
最好這樣做:
var ih=null;
for(var i=0;i
{
ih ="
}
document.querySelector('ul').innerHTML=ih;
另外的一些效能最佳化話題,等有時間再更新。
以上所述就是本文的全部內容了,希望大家能夠喜歡。

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

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

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

ISO檔案是一種常見的光碟映像檔格式,它通常用於儲存光碟的全部內容,包括檔案和檔案系統。當我們需要存取ISO文件中的內容時,就需要將其解壓縮。本文章將介紹解壓縮ISO檔案的幾種常見方法。使用虛擬光碟機解壓縮這是最常用的解壓縮ISO檔案的方法之一。首先,我們需要安裝一個虛擬光碟機軟體,例如DAEMONToolsLite、PowerISO等。然後,雙擊虛擬光碟機軟體圖標

如何使用WebSocket和JavaScript實現線上語音辨識系統引言:隨著科技的不斷發展,語音辨識技術已成為了人工智慧領域的重要組成部分。而基於WebSocket和JavaScript實現的線上語音辨識系統,具備了低延遲、即時性和跨平台的特點,成為了廣泛應用的解決方案。本文將介紹如何使用WebSocket和JavaScript來實現線上語音辨識系

WebSocket與JavaScript:實現即時監控系統的關鍵技術引言:隨著互聯網技術的快速發展,即時監控系統在各個領域中得到了廣泛的應用。而實現即時監控的關鍵技術之一就是WebSocket與JavaScript的結合使用。本文將介紹WebSocket與JavaScript在即時監控系統中的應用,並給出程式碼範例,詳細解釋其實作原理。一、WebSocket技

如何利用JavaScript和WebSocket實現即時線上點餐系統介紹:隨著網路的普及和技術的進步,越來越多的餐廳開始提供線上點餐服務。為了實現即時線上點餐系統,我們可以利用JavaScript和WebSocket技術。 WebSocket是一種基於TCP協定的全雙工通訊協議,可實現客戶端與伺服器的即時雙向通訊。在即時線上點餐系統中,當使用者選擇菜餚並下訂單

如何使用WebSocket和JavaScript實現線上預約系統在當今數位化的時代,越來越多的業務和服務都需要提供線上預約功能。而實現一個高效、即時的線上預約系統是至關重要的。本文將介紹如何使用WebSocket和JavaScript來實作一個線上預約系統,並提供具體的程式碼範例。一、什麼是WebSocketWebSocket是一種在單一TCP連線上進行全雙工

JavaScript和WebSocket:打造高效的即時天氣預報系統引言:如今,天氣預報的準確性對於日常生活以及決策制定具有重要意義。隨著技術的發展,我們可以透過即時獲取天氣數據來提供更準確可靠的天氣預報。在本文中,我們將學習如何使用JavaScript和WebSocket技術,來建立一個高效的即時天氣預報系統。本文將透過具體的程式碼範例來展示實現的過程。 We

刪除Go切片元素刪除單一元素:使用append()方法建立新切片,排除要刪除的元素。使用copy()方法移動元素並調整長度。刪除多個元素:使用for迴圈迭代切片,從新切片中排除要刪除的元素。使用reverse()方法對要刪除的元素排序,從後往前刪除以避免索引問題。根據您要刪除的元素數量和效能要求,選擇最合適的技術。

JavaScript教學:如何取得HTTP狀態碼,需要具體程式碼範例前言:在Web開發中,經常會涉及到與伺服器進行資料互動的場景。在與伺服器進行通訊時,我們經常需要取得傳回的HTTP狀態碼來判斷操作是否成功,並根據不同的狀態碼來進行對應的處理。本篇文章將教你如何使用JavaScript來取得HTTP狀態碼,並提供一些實用的程式碼範例。使用XMLHttpRequest
