首頁 > web前端 > js教程 > 主體

JavaScript基本編碼模式

高洛峰
發布: 2016-11-26 11:33:52
原創
1041 人瀏覽過

1. 變項定義
// 一般寫法
var a = 0;
var b = 1;
var c = 'xxx';
 
// 建議寫法
var a = 0,
 
// 建議寫法
var a = 0,
 

// 建議寫法

var a = 0,
 
b = 1,  'xxx';
 
2. 盡量使用字面量

// 一般寫法
var obj = new Object();
         obj.c = 'cc';
 
var arr = new Array();
 
// 建議寫法
var obj = {
        a: 'aa',bb 但= [];

function getXX(index){
    return ['aa', 'bb', 'xx', 55, 'xxb'](index);
}
 
function get ',
        500: 'xxx'
    }[code];
}
  
3. 正則字面量

var regex = new Regp('someable);函數

var cls = 'someclass',

    regex = new RegExp(cls + '\s*', 'ig');   // only for dynamic regexs
 
// 其他情況皆使用字面量使用字面上的/ig;
  
4. 設定預設值(個人感覺typeof)

// Default values
var arg = arg || 'default';  // fallback
 
document.getElement像 ftest.testElement. event){

    var event = event || window.event;

};
 
function getX(a){
    return a+1 || 'default';
}

  return typeof b !== "undefined" ? b : 'default';
}
 
5. 條件判斷

// Conditions
answer = obj && xxx &&&
// 連續判斷
if(obj && obj.xx && obj.xx.xxx){

    // do something

}
 
if(obj.xx ){
    // do something
}
 
// 使用全等判斷
if(a === b){
    // do something
}
/
// 是否支援
if(document.getElementById){
    // ability detect
}
  
6. 三元運算子

// Ternary
check value1: value = (condition) ? value1 : value2;
 
function xx(){
    if(condition){
        return value1;
         }
}
 

function xx(){

    return (condition) ? value1 : value2;
}
 
// 格式化三元運算子
foo = predicate ? "one" :
      predicate  format
  
7. 插入迭代值

// Insert iteration
var name = value[i];
    i++;
 
// 直接將迭代值插入
var name = value[i++];
 〜/遠.D. .display = 'none'; // offline
    // operation
el.style.display = 'block';
 
// 使用文件碎片操作更好 www.2cto.com 
var fragment = document.create); // better
 
el.innerHTML = '';  // fast remove all children, but may leaks memory
el.innerHTML = 'xxx'; ove //, Node it!

 

//// document.getElementsByTagName('img');  // be careful! dynamic list
  
9. 事件代理

// 使用事件代理,在更外層的元素上監聽事件
document.getElementBylickum. = function(evt){
    var evt = evt || window.event,
        target = evt.target || evt.srcElement🠎1🠎1🠎  // do something

}

}
  
10. 命名空間

// An Object as a Namespace
var MYAPP = {};
    MYAPP.dom.get = function(id){};
    MYAPP.style.css = function(APPel, style){}? ('event');
  
11. 鍊式操作

// Chaining operation: return this

function setValue(el, value){

    el.value = value;
    return this;
}
 
var obj = new MYAPP.dom.Element('span');
    obj.setText('hello')
    .setStyle('color', 'red')
    .setStyle('font', 'Verdana') 私有🀎作用域

// Function
(function(){
    var _private = 'cant see me';

 

})(); 
(function($lick) $. (){ });
})(jQuery);
  
13. 配置物件

// Configure Object
function foo(id, conf, null , null){
bar', {
    key1 : 1,
    key2 : 2

});

  
14. 型別轉換

// Type Conversion
14. 型別轉換

// Type Conversion
+'010== ;
parseInt('010', 10) === 10;
10 + '' === '10';
 

+new Date() // timestamp

+new Date;
  
15. 擴充原型
原型// 僅在需要向前相容時才使用,其他情況不建議擴充原型物件
Array.prototype.forEach = function(){
    // only forward compatible
};
  
16. 循環最佳化
};

  快取

for(var i=0, j = document.getElementsByTagName('a').length; i0; i--){
    // maybe faster
}
 
// 據說是最快的
whi(i -){

    // maybe fastest

}
  
17. 盡量使用新特新

Array.forEach();
getElementsByClassName();
Array.forEach();
getElementsByClassName();
Array.forEach();
getElementsByClassName();
就用

if(document.getElementsByClassName){

    // use
}else{
    // your implementations
}
  
    // your implementations
}
  
一次(){
    if(condition1){
        lazyDef = function(){ };
    }else if(condition2){ .  return lazyDef();

}

  
19. 私有函數與公用方法

var MYAPP = {};
 
MYAPP.dom = (function(){
    var _setStyle = function(el, prop, value){🠎);

    return {
        setStyle: _setStyle
    };

})();

 
// 當MYAPP.
})();
 


// 盡量使用,可以傳入多個參數,最後輸出拼接後的字串
console.log('xx','xx','...');
console.dir(someObj);
console.dirxml(someDom);
console.time('timer');
console.warn('xxx');
 
// 封裝可以保證不小心發佈出去也不會導致問題,但報錯時行號可能有問題
function msg(msg) {

    if(console && console.log){

        console.log(msg);   // wrong line number
    }
}
}

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板