为什么console.log()认为比alert()更好?
我总是被告知,在debugging应用程序时,JavaScript的console.log()
方法比单纯使用alert()
方法更受欢迎。 为什么是这样? 有没有一个很好的例子,有人可以指出我在哪里console.log()
显然是更好的select?
-
alert()
被阻塞 -
alert()
在非debugging环境中不能被轻易抑制 -
console
通常很好地格式化你的对象,并允许遍历它们 - 日志语句通常有一个交互指针,用来发布日志语句的代码
- 您无法一次查看多个
alert()
消息 -
console
可以具有不同的日志logging级别和直观的格式
尝试这个:
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)
两者都只是获取有关当时在JS中发生的事情的信息的一种方式。 我以前常常使用alert(),但是由于几个原因而迁移到console.log()。 (注:控制台提供的不仅仅是log(),还要看看它还能做什么)。
我认为console.log()的主要好处是:
- 它不会像alert一样停止进程
- 你可以看到什么脚本扔了日志条目,而不是把行写入你的消息
- 如果你有多于一件事你正在debugging它可以得到真正的烦人,保持击中你的警报框“确定”
- 你可以logging对象,并得到很多好的信息(感谢提醒,其他答案)
最后归结为你更喜欢debugging。
有一件事要注意。 并不是所有的浏览器都支持console.log(),如果在代码中保留console.log()调用,将会出现问题。 提供一个控制台存根,如果控制台不可用来解决该问题。
它是非阻塞的,允许你深入地检查对象(而不是仅仅看到toString()
的结果)。
在JavaScript执行恢复之前,需要解除alert
。 console.log
没有这样的问题。
console.log
还将显示带有值的对象,其中,对alert
的调用将要求您首先遍历对象。
如果您忘记删除debugging警报声明,则会直接影响最终用户。
如果忘记删除debuggins console.log语句,则用户不受影响。
另外,console.log将允许您查看对象的完整内容,而不是JavaScript的toString()表示。
我猜它有点味道,但有一些使用console.log的好处:
- 假设你想logging20个不同的东西,这将是相当烦人的警报。
- 您可以logging对象,然后检查它们。
- 例如在Chrome开发工具中,您可以保留不同页面之间的日志。
- 它是非阻塞的
- 如果忘记,它不会影响最终用户
仅举几例。
因为警报是一个PITA,所以停止一切,直到有input,并且不允许对象反省。
在某些情况下使用debugging器甚至更好。
alert()停止与浏览器的所有交互,直到消息被解散,而console.log()只是将消息输出到控制台。
防爆。 您正在打印一堆variables的值,以确保它们是正确的,并且不希望在每个variables之后closures警报窗口。