为什么console.log()被认为比alert()更好?

时间:2011-11-20 17:55:46

标签: javascript debugging alert console.log

我一直被告知,在调试应用程序时,JavaScript的console.log()方法比仅使用alert()方法更受欢迎。为什么是这样?有没有一个很好的例子,有人可以指出我console.log()显然是更好的选择?

9 个答案:

答案 0 :(得分:34)

  • alert()阻止了
  • alert()在非调试环境中无法轻易被抑制
  • console通常可以很好地格式化您的对象并允许遍历它们
  • 日志记录语句通常具有指向发出日志记录语句的代码的交互式指针
  • 您不能一次查看多条alert()条消息
  • console可以使用直观格式设置不同的日志记录级别

答案 1 :(得分:5)

试试这个:

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)

答案 2 :(得分:4)

两者都只是获取有关JS当时发生的事情的信息的一种方式。我曾经一直使用alert()但由于一些原因迁移到console.log()。 (旁注:控制台提供的不仅仅是log(),看看它还能做些什么)。

我认为console.log()的主要好处是:

  • 它不会停止像警报这样的过程
  • 您可以看到哪个脚本在不将行放入邮件的情况下抛出了日志条目
  • 如果您正在调试多件事情,那么在警报框上点击“确定”就会变得非常烦人
  • 您可以记录对象并获取大量有用信息(感谢提醒,其他回复者)

最后归结为您更喜欢调试的方式。

有一点需要注意。并非所有浏览器都支持console.log(),如果您在代码中保留console.log()调用,则会出现问题。如果控制台不可用于解决该问题,请提供控制台存根。

答案 3 :(得分:3)

它是非阻塞的,允许您深入检查对象(而不仅仅是查看toString()它们的结果。)

答案 4 :(得分:2)

在javascript执行恢复之前,alert需要被解雇。 console.log没有这样的问题。

console.log还会显示带有值的对象,其中对alert的调用将要求您首先遍历对象。

答案 5 :(得分:1)

如果您忘记删除调试警报声明,它将直接影响最终用户 如果您忘记删除debuggins console.log语句,则用户不会受到影响 此外,console.log将允许您查看对象的完整内容,而不是JavaScript的toString()表示。

答案 6 :(得分:1)

我想这有点像品味,但使用console.log有许多好处:

  • 假设你要记录20个不同的东西,这会让人非常恼火。
  • 您可以记录对象,然后检查它们。
  • 例如,在Chrome开发工具中,您可以保留不同页面之间的日志。
  • 这是非阻塞的
  • 如果忘记了
  • ,它不会影响最终用户

仅举几例。

答案 7 :(得分:0)

因为警报是PITA,所以在输入之前停止所有操作,并且不允许对象自省。

在某些情况下使用调试器会更好。

答案 8 :(得分:0)

alert()停止与浏览器的所有交互,直到消息被解除,而console.log()只是将消息打印到控制台。

实施例。您正在打印一堆变量的值,以确保它们是正确的,并且不希望在每个变量之后关闭警报窗口。