麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > JavaScript > 正文

15條JavaScript最佳實踐小結

2019-11-20 22:26:02
字體:
來源:轉載
供稿:網友
本文檔整理大部分公認的、或者少有爭議的JavaScript良好書寫規范(Best Practice)。一些顯而易見的常識就不再論述(比如要用對象支持識別判斷,而不是瀏覽器識別判斷;比如不要嵌套太深)。條目順序按重要級粗略的從高到低排列。
把外部JavaScript文件放在HTML底部
我們的目標是相同的:為用戶盡可能快地顯示內容。當載入一個腳本文件的時候,HTML會停止解析,直到腳本載入完畢。因此,用戶可能會長時間對著一個空白的屏幕,看上去什么都沒有發生。如果你的JavaScript代碼只是增加一些功能(比如按鈕的點擊動作),那么盡管大膽地把文件引用放在HTML底部吧(就在</body>之前),你會看到明顯的速度提升。如果是用于其他目的的腳本文件,則需要慎重地考慮。但無論如何,這毫無疑問是一個非常值得考慮的地方。
優化循環
循環遍歷一個數組
復制代碼 代碼如下:

//這段糟糕的代碼會在每次進入循環的時候都計算一次數組的長度
var names = ['George','Ringo','Paul','John'];
for(var i=0;i<names.length;i++){
doSomeThingWith(names[i]);
}

復制代碼 代碼如下:

//這樣的話,就只會計算一次了
var names = ['George','Ringo','Paul','John'];
var all = names.length;
for(var i=0;i<all;i++){
doSomeThingWith(names[i]);
}

復制代碼 代碼如下:

//這樣就更加簡短了
var names = ['George','Ringo','Paul','John'];
for(var i=0,j=names.length;i<j;i++){
doSomeThingWith(names[i]);
}

復制代碼 代碼如下:

//這段代碼的糟糕之處在于,它把變量聲明放在循環體內了,每次循環都會創建變量
for(var i = 0; i < someArray.length; i++) {
var container = document.getElementById('container');
container.innerHtml += 'my number: ' + i;
console.log(i);
}

復制代碼 代碼如下:

//在循環體外聲明變量,變量只會創建一次
var container = document.getElementById('container');
for(var i = 0, len = someArray.length; i < len; i++) {
container.innerHtml += 'my number: ' + i;
console.log(i);
}

用盡量簡短的代碼
如果可以增加可讀性的話,那么使用代碼的簡短格式是有意義的,下面是一份不完全的列表:
復制代碼 代碼如下:

//對于條件判斷只有兩次的,這是一種冗長的寫法
var direction;
if(x > 100){
direction = 1;
} else {
direction = -1;
}

復制代碼 代碼如下:

//更好的代碼
var direction = (x > 100) ? 1 : -1;

復制代碼 代碼如下:

//判斷一個 變量是否定義,如果否,就賦予一個值,糟糕的代碼
if(v){
var x = v;
} else {
var x = 10;
}

復制代碼 代碼如下:

//更好的代碼
var x = v || 10;

復制代碼 代碼如下:

//重復了變量名很多次
var cow = new Object();
cow.colour = 'brown';
cow.commonQuestion = 'What now?';
cow.moo = function(){
console.log('moo');
}
cow.feet = 4;
cow.accordingToLarson = 'will take over the world';

復制代碼 代碼如下:

//更好的寫法是這樣
var cow = {
colour:'brown',
commonQuestion:'What now?',
moo:function(){
console.log('moo);
},
feet:4,
accordingToLarson:'will take over the world'
};

復制代碼 代碼如下:

//重復了很多次數組名
var aweSomeBands = new Array();
aweSomeBands[0] = 'Bad Religion';
aweSomeBands[1] = 'Dropkick Murphys';
aweSomeBands[2] = 'Flogging Molly';
aweSomeBands[3] = 'Red Hot Chili Peppers';
aweSomeBands[4] = 'Pornophonique';

復制代碼 代碼如下:

//更好的代碼
var aweSomeBands = [
'Bad Religion',
'Dropkick Murphys',
'Flogging Molly',
'Red Hot Chili Peppers',
'Pornophonique'
];

單引號和雙引號
為了避免混亂,我們建議在HTML中使用雙引號,在JavaScript中使用單引號。
復制代碼 代碼如下:

//html
<img src="picture.gif" />

復制代碼 代碼如下:

//JavaScript
<script type="text/javascript">
document.write('<p>');
</script>

復制代碼 代碼如下:

//一段混用的jQuery代碼
$('h1').after('<div id="content"><h2>目錄</h2><ol></ol></div>');

避免混入其他技術
CSS:假設我們的頁面上有必須填入的輸入框(擁有class“mandatory”),如果它沒有被輸入數據,周圍就會加上紅色邊框。
復制代碼 代碼如下:

//一段混合了其他技術的代碼會這樣做:
var f = document.getElementById('mainform');
var inputs = f.getElementsByTagName('input');
for(var i=0,j=inputs.length;i<j;i++){
if(inputs[i].className === 'mandatory' &&
inputs[i].value === ''){
inputs[i].style.borderColor = '#f00';
inputs[i].style.borderStyle = 'solid';
inputs[i].style.borderWidth = '1px';
}
}

復制代碼 代碼如下:

//一段良好的代碼會這么做:將風格化的事情交給CSS吧
var f = document.getElementById('mainform');
var inputs = f.getElementsByTagName('input');
for(var i=0,j=inputs.length;i<j;i++){
if(inputs[i].className === 'mandatory' &&
inputs[i].value === ''){
inputs[i].className += ' error';
}
}

HTML:假設我們有內多HTML內容需要用JavaScript來載入,那么使用Ajax載入單獨的文件,而不是通過JavaScript處理DOM,后者會讓代碼難以處理,并且出現難以維護的兼容性問題。
驗證JavaScript代碼
瀏覽器處理JavaScript代碼可能會非常寬容,但我建議你不要依賴瀏覽器的解析能力,因此養成了懶散的編碼習慣。
最簡單的檢測你的代碼質量的方法是通過一個在線JavaScript驗證工具JSLint。
“JSLint takes a JavaScript source and scans it. If it finds a problem, it returns a message describing the problem and an approximate location within the source. The problem is not necessarily a syntax error, although it often is. JSLint looks at some style conventions as well as structural problems. It does not prove that your program is correct. It just provides another set of eyes to help spot problems.”
主站蜘蛛池模板: 成年人在线视频免费 | 91aa.app | 久久精品视频16 | 成人一级黄色片 | 一级电影在线观看 | 久久精品一区二区三区四区五区 | 蜜桃传免费看片www 一本色道精品久久一区二区三区 | 欧美性生交xxxxx久久久缅北 | 羞羞草视频 | 久久国产成人精品国产成人亚洲 | 精品伊人| 久久精品女人天堂av | 美女网站黄在线观看 | 99麻豆久久久国产精品免费 | 免费观看一区二区三区视频 | 激情免费视频 | 特片网久久 | 精品xxxx户外露出视频 | 91嫩草丨国产丨精品入口 | 久久久久久久久久美女 | 日本不卡视频在线观看 | 精品在线一区二区三区 | 免费黄色小视频网站 | 免费毛片电影 | 日韩激情一区二区三区 | 久久久新| 成人黄色小视频在线观看 | 午夜视频在线 | 国产毛片在线看 | 欧美高清视频一区 | 亚洲性在线视频 | 国产一区二区在线观看视频 | 成人情欲视频在线看免费 | 嗯~啊~用力~高h | 污版视频在线观看 | 日韩伦理电影免费观看 | 久久亚洲成人网 | 国产精品18久久久久久久久 | 少妇的肉体的满足毛片 | 黄色7777| 色淫影院 |