题目:用 JavaScript 代码实现空位补零,比如 pad(12, 3) => 012
标准写法
function pad0(num, n) {
var len = num.toString().length;
while(len < n) {
num = "0" + num;
len++;
}
return num;
}
}
缩减为3行功能代码
function pad1(num, n) {
var i = (num + "").length;
while(i++ < n) num = "0" + num;
return num;
}
}
再减
function pad2(num, n) {
if ((num + "").length >= n) return num;
return pad2("0" + num, n);
}
}
再来
function pad3(num, n) {
return (Array(n).join(0) + num).slice(-n);
}
}
问题来了,代码少了,bug来了,效率问题也来了
看看下面的测试代码
var testNum = 12, testNum2 = 123456789, testPad = 7;
println(pad0(testNum, testPad));
println(pad0(testNum2, testPad));
println(pad0(testNum2, testPad));
依次输出, 然后加上测试
输出的结果如下
0000012
123456789
0000012
123456789
0000012
123456789
0000012
3456789
pad0 time: 2402
pad1 time: 2287
pad2 time: 2312
pad3 time: 2647
123456789
0000012
123456789
0000012
123456789
0000012
3456789
pad0 time: 2402
pad1 time: 2287
pad2 time: 2312
pad3 time: 2647
可以看到, 前三种写法的输出都是正确的,但是最后一种存在bug, 效率上讲, 第二种最好,其次是第三种, 最后一个成绩最差
所以,代码也不是越少越好的