Javascript &引用;警报坏了“真正地
有一种观点认为“alert()是坏的” 致谢:Javascript &引用;警报坏了“真正地,javascript,Javascript,有一种观点认为“alert()是坏的” 致谢: 当然,我们很少希望在实际的UI设计中使用它,因为有更好的方式与用户沟通 对于调试,console.log()比alert()有更多的价值 当alert()遇到阻碍时,某些情况(如使用setTimeout)会遇到问题 如果开发人员需要暂停和恢复执行,那么实际的调试器比alert()更好地处理暂停和恢复执行 问题: 有没有一个可靠的、合乎逻辑的理由永远不要使用alert() console.log()的增加值是否真的会大幅降低alert()的值,使
- 当然,我们很少希望在实际的UI设计中使用它,因为有更好的方式与用户沟通
- 对于调试,
比console.log()
有更多的价值alert()
- 当
遇到阻碍时,某些情况(如使用alert()
)会遇到问题setTimeout
- 如果开发人员需要暂停和恢复执行,那么实际的调试器比
更好地处理暂停和恢复执行alert()
alert()
console.log()
的增加值是否真的会大幅降低alert()
的值,使其从“在有限的情况下有用”变为“不好”alert()
,但没有设置日志记录,并且没有任何副作用(想想教程或快速原型),你会怎么说alert()
alert()
的工作原理不同于console.log()
,而且console
并不总是可用,因此console.log()
可能会降低alert()
的值,但肯定它不能总是被替换console.log()
与alert()
的区别,特别是alert()
必须输出字符串,因此它必须首先将值转换为字符串-如果您想在某个时候检查您的值,并选择alert()
来完成该任务,这一点非常重要它还会停止脚本的执行(这有时可能有用)- ,
这与“从不使用表”位相当。这是一种夸张的说法,旨在减少这种极其糟糕的设计的实例数量。它被认为是糟糕的设计,因为它阻止了额外的浏览器操作(如后退按钮)和代码执行(额外的JavaScript和页面呈现),直到用户单击“确定”按钮。该按钮上的“ok”标签无法更改,并且不适用于绝大多数用例
有更好的方法显示错误信息、健全性检查操作和确认对话框,所以请使用它们有一些“适当”的用例,例如当您出于某种原因需要停止正常的页面流,并且继续加载页面是危险的(安全性)。我想不出多少具体的例子,但它们都是边缘化的。某处 您正在打断用户-如果他打开了许多选项卡,而您提醒他,他会突然转到您的选项卡。。作为一个用户,我感到很痛苦。这是我最担心的事 尽管如此,console.log并不能在所有浏览器中运行,但IE7不支持相同的浏览器 只要清楚为什么会有警报,使用警报是可以的 此外,警报对记录JS对象没有帮助,您只能显示字符串 有没有一个可靠的、合乎逻辑的理由不使用alert() 警报是坏的,因为它没有积极的功能,只有消极的功能
- 阻止整个浏览器
- 阻止javascript线程
- 只打印字符串
- 需要用户交互才能继续(这意味着您无法自动使用浏览器)
- 被常见的弹出窗口阻止程序阻止
- 在node.js等非浏览器环境中不起作用(但是console.log在node.js中起作用)
alert唯一的价值是作为一个快速的黑客工具来调试旧版浏览器,或者作为一个烦扰用户的工具。好吧,你似乎用你的第一列理由回答了你的问题 是否有一个可靠的、合乎逻辑的理由不使用警报 何时调试站点?是,切勿使用
alert()
从来没有,从来没有?可能太远了。但是,对于大多数用户来说,alert()
会带来愤怒和沮丧。我从未去过一个网站,在那里我很高兴他们用一个提醒对话框打断了我的访问
console.log()
的增加值是否真的会大幅降低alert()
的值,使其从“在有限的情况下有用”变为“不好”
在调试应用程序时,我同意,alert()
是错误的。我可以在console.log()
中提供更多信息,这是一个完整的JavaScript对象,详细说明了大量信息。在警报框中显示的消息没有那么大的灵活性
如果有人想在一个简短的测试中使用alert(),而这个测试没有设置日志记录,并且任何副作用都是无关的(想想教程或快速原型),你会怎么说
与alert()
相比,键入console.log()
并没有那么难。你得到了很多很多有用的信息,你正在为你的编码“肌肉记忆”进行良好的训练。如果你一直使用良好的实践,它们会自然而然地出现在你的面前。如果你一直使用坏习惯,它们也会自然而然地出现在你身上
最终,这取决于你在做什么。你在调试吗?或者您正在尝试与用户通信?这是两种不同的东西,需要不同的方法。出于调试目的,
警报有时会适得其反,但它是即时的。在调试场景中使用alert
的问题在于它会中断程序流。而console.log
从允许
var oldAlertFunc = window.alert;
window.alert = function(message) {
console.log(message);
};