【发布时间】:2012-01-02 11:02:00
【问题描述】:
我一直被告知,在调试应用程序时,JavaScript 的 console.log() 方法比简单地使用 alert() 方法更受欢迎。为什么是这样?有没有一个很好的例子有人可以指出console.log() 显然是更好的选择?
【问题讨论】:
标签: javascript debugging alert console.log
我一直被告知,在调试应用程序时,JavaScript 的 console.log() 方法比简单地使用 alert() 方法更受欢迎。为什么是这样?有没有一个很好的例子有人可以指出console.log() 显然是更好的选择?
【问题讨论】:
标签: javascript debugging alert console.log
它是非阻塞的,允许您深入检查对象(而不是只查看toString()ing 的结果)。
【讨论】:
alert 需要在 javascript 执行恢复之前被解除。 console.log没有这个问题。
console.log 还将显示带有值的对象,其中对 alert 的调用将要求您首先遍历该对象。
【讨论】:
因为警报是 PITA,所以在有输入之前停止一切,并且不允许对象自省。
在某些情况下使用调试器会更好。
【讨论】:
试试这个:
var data = {a: 'foo', b: 'bar'};
console.log(data);
alert(data);
您会看到console.log 向您显示对象,而alert 为您提供[object Object],这没有用。这也适用于,例如元素:
alert(document.body); // [object HTMLBodyElement] (exact result depends on your browser)
【讨论】:
alert() 被屏蔽alert() 在非调试环境下不容易被抑制console 通常会很好地格式化您的对象并允许遍历它们alert() 消息consoles 可以通过直观的格式设置不同的日志记录级别【讨论】:
alert = function(){}
console.log()。这仅适用于旧版本的 IE,如果你支持它,你就是在浪费你宝贵的时间。去做一些很棒的东西,不支持古老的浏览器。
如果您忘记删除调试警报语句,它将直接影响最终用户。
如果您忘记删除 debuggins console.log 语句,用户不会受到影响。
此外,console.log 将允许您查看对象的完整内容,而不是 JavaScript 的 toString() 表示。
【讨论】:
我想这有点个人喜好问题,但使用 console.log 有很多好处:
仅举几例。
【讨论】:
alert() 停止与浏览器的所有交互,直到消息被解除,而 console.log() 只是将消息打印到控制台。
例如。您正在打印一堆变量的值以确保它们是正确的,并且不想在每个变量之后关闭警报窗口。
【讨论】:
两者都只是获取有关您的 JS 中正在发生的事情的信息的一种方式。我曾经一直使用 alert(),但出于一些原因迁移到了 console.log()。 (旁注:控制台提供的不仅仅是 log(),看看它还能做什么)。
我认为 console.log() 的主要好处是:
最终归结为您喜欢如何调试。
需要注意的一件事。并非所有浏览器都支持 console.log(),如果您将 console.log() 调用留在代码中,则会出现问题。如果控制台无法解决该问题,请提供控制台存根。
【讨论】: