久艹视频免费看,亚洲成av人综合在线观看,51久久夜色精品国产水果派解说,gogo全球大胆高清人体444

知識學堂
  • ·聯(lián)系電話:+86.023-75585550
  • ·聯(lián)系傳真:+86.023-75585550
  • ·24小時手機:13896886023
  • ·QQ 咨 詢:361652718 513960520
當前位置 > 首頁 > 知識學堂 > 網(wǎng)站建設(shè)知識
JavaScript技巧:24條JavaScript實用建議
更新時間:2011-10-13 | 發(fā)布人:本站 | 點擊率:627

為JavaScript做一點性能小提升吧!
本文列出了24條能讓你的代碼編寫過程更為輕松高效的建議。也許您還是JavaScript初學者,剛剛寫完自己的Hello World,那這里有很多對您的工作將十分有用的小貼士;也許有些技巧您已經(jīng)知道,那就試試快速瀏覽一下,看能不能發(fā)現(xiàn)一點新東西吧!
注:本文多次用到Firebug的console對象,請參考 Firebug Console API 。關(guān)于firebug的更詳細介紹,請猛擊這里。
1. 用 === 代替 ==JavaScript里有兩種不同的相等運算符:===|!== 和==|!=。相比之下,前者更值得推薦。請盡量使用前者。
“如果兩個比較對象有著同樣的類型和值,===返回true,!==返回false!
– JavaScript: The Good Parts
不過,如果使用==和!=,在操作不同數(shù)據(jù)類型時, 你可能會遇到一些意想不到的問題。在進行相等判斷前,JavaScript會試圖將它們轉(zhuǎn)換為字符串、數(shù)字或 Boolean量。
2. 避免使用Eval函數(shù)
Eval函數(shù)把一個字串作為參數(shù),并把字串作為JavaScript語句執(zhí)行,返回結(jié)果(參考)。
此函數(shù)不僅會降低你腳本的執(zhí)行效率,而且還大大增加了安全風險,因為它賦予了作為文本的參數(shù)太大的權(quán)利。千萬別用!
3. 不要使用快速寫法
技術(shù)上說,你可以省略掉大部分花括弧和句尾分號,絕大多數(shù)瀏覽器都能正確執(zhí)行以下語句:
.if(someVariableExists)
x = false
不過,如果是這樣的呢:
.if(someVariableExists)
x = false
anotherFunctionCall();
你可能會認為它和下面的語句相等:
if(someVariableExists) {
x = false;
anotherFunctionCall();
}
不幸的是,事實并非如此,F(xiàn)實情況是它等價于:
if(someVariableExists) {
x = false;
}
anotherFunctionCall();


如您注意到的,再漂亮的縮進也不能代替這華麗的花括弧。在所有情況下都請寫清楚花括號和句尾分號。在只有一行語句的時候能偶爾省略掉,雖然下這么做也是極度不被推薦的:
if(2 + 2 === 4) return 'nicely done';
多考慮下將來吧,孩子
假設(shè),在將來的開發(fā)過程中,你需要為這個 if 語句添加更多的命令呢?到時候你還不是得把括號給加上?
4. 好好利用JS Lint
JSLint 是由 Douglas Crockford 編寫的一個調(diào)試器。你只需要貼上你的代碼,它就能快速為您掃描出任何明顯的錯誤和問題。
“JSLint 掃描接收的代碼。發(fā)現(xiàn)問題,描述問題,并給出其在源碼中的大概位置。可發(fā)現(xiàn)的問題包括但不限于語法錯誤,雖然語法錯誤確實是最常見的。JSLint也會用約定俗成的習慣檢查代碼的格式化風格,以及結(jié)構(gòu)錯誤。通過JSLint的掃描并不能保證你的程序就完全正確。它只是為您提供了額外一雙發(fā)現(xiàn)錯誤的眼睛!
– JSLint 文檔
完成代碼之前,把它放到JSLint里檢查一下,快速消滅你的無心之過。
5. 在頁面底部加載腳本
正如下圖所示:

請記住—— 我們要千方百計保證客戶端的頁面載入速度盡可能的快。而腳本沒載入完成,瀏覽器就沒法加載頁面的剩余部分。
如果你的JS文件只是添加一些額外功能——例如,為點擊某鏈接綁定事件——那大可以等頁面加載基本完成后再做。把JS文件放到頁面最后,body的結(jié)束標簽之前,這樣做最好了。
更好的寫法是:

超哥是世界上最帥的人。benhuoer.com是世界上最好看的博客。

 

 


6. 在 For 語句外部聲明變量
當需要執(zhí)行冗長的for語句時,不要讓JavaScript引擎每次都重復(fù)那些沒有必要的操作。例如:
這樣不好:
for(var i = 0; i < someArray.length; i++) {
var container = document.getElementById('container');
container.innerHtml += 'my number: ' + i;
console.log(i);
}
這段代碼每次都重新定義數(shù)組長度,每次都在遍歷DOM尋找container元素 —— 太傻了!
這樣好多了:
var container = document.getElementById('container');
for(var i = 0, len = someArray.length; i < len; i++) {
container.innerHtml += 'my number: ' + i;
console.log(i);
}
我要給留言改進這段代碼的人額外驚喜!歡迎大家留言討論!
7. 快速構(gòu)建字串
要對一個數(shù)組或?qū)ο笞鲅h(huán)操作時,不要老惦記著一表人才的for語句,拿點創(chuàng)意出來嘛!明明就還有很多更快的辦法:
var arr = ['item 1', 'item 2', 'item 3', ...];
var list = '
' + arr.join('
') + '
';
“沒那么多繁文縟節(jié)來煩你;你就信我一次好了(或者你也可以自己試一試)—— 這真的是迄今能找到的最快辦法了!
用點土辦法,也別管它背后究竟發(fā)生了什么抽象的東西,通常土辦法都比那些優(yōu)雅的辦法要快捷得多!”– James Padolsey, james.padolsey.com
8. 減少全局變量
“把你踩在全局的那些亂七八糟的腳印都歸于一人名下,能顯著降低與其他應(yīng)用、小工具或JS庫沖突的可能性! – Douglas Crockford
var name = 'Jeffrey';
var lastName = 'Way';

function doSomething() {...}

console.log(name); // Jeffrey -- or window.name
更好的寫法:
var DudeNameSpace = {
name : 'Jeffrey',
lastName : 'Way',
doSomething : function() {...}
}
console.log(DudeNameSpace.name); // Jeffrey
注意看,我們是如何戲劇化地把“亂七八糟的腳印”都歸到“DudeNameSpace”這對象之下的。
9. 寫好注釋
可能一開始你會覺得并無必要,但相信我,你將來會主動想要盡可能寫好代碼的注釋的。當你幾個月后再回看某項目時,結(jié)果卻發(fā)現(xiàn)很難想起當時寫某句東西時腦子在想的什么了,是不是很讓人沮喪呢?或者,如果有同事要修訂你的代碼呢?一定,一定要為你代碼里的重要部分加上注釋。
// Cycle through array and echo out each name.
for(var i = 0, len = array.length; i < len; i++) {
console.log(array[i]);
}
10. 試試漸進增強