【问题标题】:Way to save console.count() as an integer?将 console.count() 保存为整数的方法?
【发布时间】:2015-04-21 14:53:29
【问题描述】:

每次使用时,我都会尝试将 1 除以 console.count()。但是,此代码不起作用。

   var counter = console.count();
    console.log(1/counter);

关于我如何做到这一点的任何建议?我尝试做 parseInt 但没有运气。

【问题讨论】:

  • 您可能错误地使用了console.count()(至少在 Chrome 中):developer.chrome.com/devtools/docs/…
  • console.count() 不返回任何内容 - 关键是将计数记录到控制台。如果您的逻辑需要计数器,请自行构建。

标签: javascript jquery console


【解决方案1】:

如何将 console.count() 保存为整数?

没有。 console.count() 不返回任何内容,它直接打印到控制台,就像 console.log() 一样。


console.count的简单实现:

var count = (function() {
  var counter = {};
  return function(v) {
    return (counter[v] = (counter[v] || 0) + 1);
  }
}());

console.log('foo', count('foo'));
console.log('foo', count('foo'));
console.log('bar', count('bar'));
      

【讨论】:

  • 有没有办法模仿将console.count() 保存为整数的方法?
  • “模仿一种保存方式” 这似乎没有意义。但如果你想复制console.count 的逻辑,那肯定是可能的(而且非常容易)。
  • 有没有一种方法可以在每次从不同的函数更新变量时更新计数?
  • 你不能拦截变量赋值,如果这就是你的意思。我也看不出这与原始问题有什么关系。
【解决方案2】:

这是一个拦截发送到控制台的消息的脚本。

var counter = 0;
function takeOverConsole(){
        var console = window.console
        if (!console) return
        function intercept(method){
            var original = console[method]
            console[method] = function(){
                var message = Array.prototype.slice.apply(arguments).join(' ')
                // do sneaky stuff
                if (original.call){
                    // Do this for normal browsers
                    original.call(console, message)
                }else{
                    // Do this for IE
                    original(message)
                }
                counter++;
            }
        }
        var methods = ['log', 'warn', 'error', 'count']
        for (var i = 0; i < methods.length; i++)
            intercept(methods[i])
    }

让 Felix King 的回答更进一步。这是一种更准确的方法来拦截和计算发送到控制台的任何内容。

您可以稍微自定义功能并添加您想要跟踪和计数的任何方法。

All console methods

我多说here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-09
    相关资源
    最近更新 更多