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

Dan*_*abo 22 javascript debugging alert console.log

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

Tom*_*icz 34

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

  • 我不确定你的意思是说警告不容易被压制.你需要的只是`alert = function(){}` (2认同)

lon*_*day 5

试试这个:

var data = {a: 'foo', b: 'bar'};
console.log(data);
alert(data);
Run Code Online (Sandbox Code Playgroud)

你会看到它console.log向你显示对象,同时alert给你[object Object],这是没用的.这也是正确的,例如元素:

alert(document.body); // [object HTMLBodyElement] (exact result depends on your browser)
Run Code Online (Sandbox Code Playgroud)


gre*_*vil 5

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

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

  • 它不会像警报那样停止进程
  • 您可以看到哪个脚本的哪一行抛出了日志条目,而无需将该行放入您的消息中
  • 如果您正在调试不止一件事情,那么在您的警报框中继续点击“确定”会变得非常烦人
  • 你可以记录对象并获得很多好的信息(感谢提醒,其他回答者)

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

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