覆盖 console.log 以格式化数字
Override console.log to format numbers
我经常需要在 javascript 调试期间将数字记录到控制台,但我不需要所有小数位。
console.log("PI is", Math.PI); // PI is 3.141592653589793
如何覆盖 console.log 以始终将数字格式化为小数点后两位?
注意:重写 Number.prototype.toString()
不会实现此目的。
创建一个快捷键功能,便于输入和格式化数字:
const dp = function() {
let args = [];
for (let a in arguments) args.push(typeof arguments[a] == "number"?arguments[a].toFixed(2):arguments[a])
console.log.apply(console, args);
}
给你:
dp("PI is", Math.PI); // 圆周率是 3.14
覆盖内置的东西是一个非常非常糟糕的主意。可以写自己的小函数作为捷径:
const log = (...args)=> console.log(...args.map(el =>
typeof el === "number"? Number(el.toFixed(2)) : el
));
log("Math.PI is ", Math.PI);
您可以为 console.log
使用猴子补丁,这通常是不可取的。
void function () {
var log = console.log;
console.log = function () {
log.apply(log, Array.prototype.map.call(arguments, function (a) {
return typeof a === 'number'
? +a.toFixed(2)
: a;
}));
};
}();
console.log("PI is", Math.PI); // PI is 3.14
console.log("A third is", 1/3); // A third is 0.33
我经常需要在 javascript 调试期间将数字记录到控制台,但我不需要所有小数位。
console.log("PI is", Math.PI); // PI is 3.141592653589793
如何覆盖 console.log 以始终将数字格式化为小数点后两位?
注意:重写 Number.prototype.toString()
不会实现此目的。
创建一个快捷键功能,便于输入和格式化数字:
const dp = function() {
let args = [];
for (let a in arguments) args.push(typeof arguments[a] == "number"?arguments[a].toFixed(2):arguments[a])
console.log.apply(console, args);
}
给你:
dp("PI is", Math.PI); // 圆周率是 3.14
覆盖内置的东西是一个非常非常糟糕的主意。可以写自己的小函数作为捷径:
const log = (...args)=> console.log(...args.map(el =>
typeof el === "number"? Number(el.toFixed(2)) : el
));
log("Math.PI is ", Math.PI);
您可以为 console.log
使用猴子补丁,这通常是不可取的。
void function () {
var log = console.log;
console.log = function () {
log.apply(log, Array.prototype.map.call(arguments, function (a) {
return typeof a === 'number'
? +a.toFixed(2)
: a;
}));
};
}();
console.log("PI is", Math.PI); // PI is 3.14
console.log("A third is", 1/3); // A third is 0.33