下面是个人对JavaScript取整的总结和比较:
测试代码是:
var start = new Date();
for( var i=0; i<9000; i++ ){
console.log( "" + 3.33 >> 0 );
}
var stop = new Date();
console.log( stop.getTime() - start.getTime() );
测试的10次平均 1408.3
cosole.log( "" + ~~3.33 );
测试的10次平均 965.8
console.log( "" + Math.ceil(3.33) );
测试的10次平均 1379.2
console.log( "" + Math.floor(3.33) );
测试的10次平均1344.4
console.log( "" + Math.round(3.33) );
测试的10次平均1353.4
console.log( "" + parseInt(3.33) );
测试的10次平均 1353.5
console.log( "" + 3.33|0 );
测试的10次平均1420.4
那么问题来了,这个是取整后转了字符型,下面对其不转字符进行测试:
var start = new Date();
for( var i=0; i<9000; i++ ){
console.log( 3.33 >> 0 );
}
var stop = new Date();
console.log( stop.getTime() - start.getTime() );
测试的10次平均 564.1
cosole.log( ~~3.33 );
测试的10次平均 562.9
console.log( Math.ceil(3.33) );
测试的10次平均 733.7
console.log( Math.floor(3.33) );
测试的10次平均716.4
console.log( Math.round(3.33) );
测试的10次平均718.3
console.log( parseInt(3.33) );
测试的10次平均 715.5
console.log( "" + 3.33|0 );
测试的10次平均557.6
提示:这些方法返回的都是number类型,如果是需要数字转字符就用最快的~~3.33来转,如果不需要转变字符的话就用最快的3.33|0。如果有什么不对的地方希望给以提点。