動態建構正規表示式
new RegExp( Expr.match[ type ]. /(?![^[]*])(?![^(]*))/.source) )
來自sizzle,動態建構正則時,這樣做避免了字元轉義。
更有彈性和巧妙的數字補零
f (num / Math.pow(10, length)).toFixed(length).substr(2);
}
取數組的最大值和最小值
Math.max.apply(Math, [1,2 ,3]) //3
Math.min.apply(Math, [1,2,3]) //1
產生漂亮的隨機字串
Math.random().toString(16).subing (2); //8位元
Math.random().toString(36).substring(2); //16位元
取得時間戳
相對於
var timeStamp = (new Date).getTime();
如下方式更方便:
var timeStamp = Number(new Date);
轉換為數值並取整
var result = '3.1415926' | 0>
var result = '3.1415926' | 00
字串格式化
function format(format) {
function format(format) { FB.String.format._formatRE = /({[^}^{] })/g;
}
var values = arguments;
return format.replace(
FB.String.format._formatRE,
function(str, m) { value = values[index 1];
if (value === null || value === undefined) { return value.toString() ;
}
);
}
使用:
使用:
> 程式碼如下:format('{0}.facebook.com/{1}', 'www', 'login.php'); //-> www.facebook .com/login.php
交換兩個變數的值
複製程式碼
程式碼如下:var foo = 1;var bar = 222 ;
foo = [bar, bar=foo][0];
RegExp Looping
複製程式碼
程式碼如下:String.prototype.format = function ( /argssString. / ) { var args = arguments;
return this.replace(
/{(d )}/g,
function (full, idx) {
return args[idx];
} )
}
'Hello {0}, How{1}'.format( 'Bob', ' you doin');
// => Hello Bob, How you doinhttp://mazesoul.github.com/Readability_idioms_and_compression_tolerance /#31.0
定義即運行函數
( function() {
( function() {
//do something>thing } )();
這確實是最簡單的技巧,但也是最實用的技巧。 奠定了JavaScript封裝的基礎。
代碼如下:
var some = con1 ? val1 : con3 ? val3 :
排除>一種函數註冊-呼叫機制
來自CKEditor,我做了提取。
( function() {
// 將可用下標存取屬性的物件轉換成陣列
// 注意,IE下DOMNodeList會失敗
function toArray( arrayLike, index ) {
return Array.prototype.slice .call( arrayLike, index || 0 );
}
window.Util = {
'addFunction' : function( fn, scope ) {
return fns.push( ftion(ns.push
return fn.apply( scope || window, arguments );
} ) - 1;
},
'removeFunction' : function( index ) {
fns[ index ] = null;
},
'callFunction' : function( index ) {
var fn = fns[ index ];
return fn && fn.apply( window, toArray( arguments, 1 );
};
} )();
// 應用場景
var fnId;
// 在閉包中,新增一個可供全域呼叫的函數
( function( ) {
fnId = Util.addFunction( function( msg ) {
alert( msg );
} );
} )();
// 呼叫
Util.callFunction( fnId, 'Hello, World' ); //-> 'Hello,World';
短路運算
var something = 'xxxx';
var something = 'xxxx'; 'xxx';
console.log( false && something ); //-> false
console.log( true || something ); // -> true
console.log( false || something ); //-> something