代码之家  ›  专栏  ›  技术社区  ›  Marc

覆盖控制台。记录以格式化数字

  •  0
  • Marc  · 技术社区  · 7 年前

    在javascript调试期间,我经常需要将数字记录到控制台,但我不需要所有的小数位。

    console.log("PI is", Math.PI); // PI is 3.141592653589793
    

    Number.prototype.toString()

    3 回复  |  直到 7 年前
        1
  •  2
  •   Jonas Wilms    7 年前

    覆盖内置内容是一个非常非常糟糕的主意。可以编写自己的小函数作为快捷方式:

    const log = (...args)=> console.log(...args.map(el =>
         typeof el === "number"? Number(el.toFixed(2)) : el
    ));
    
    log("Math.PI is ", Math.PI);
        2
  •  1
  •   Nina Scholz    7 年前

    你可以用猴子贴片 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
        3
  •  0
  •   Marc    7 年前

    制作一个快速快捷功能,可以轻松键入和格式化数字:

        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);
        }