假设 - 假设我有一些JavaScript来处理三个不同按钮的点击次数:
$("#working").click(function () {
alert("Seth Rollins is the greatest champion of all time.");
console.log("WWE World Heavyweight Champion");
});
$("#fix-this-error").click(function () {
alert(this_should_not_show_up_in_the_console);
console.log("This won't show");
});
$("#should-error").click(function () {
alert(oipewavqn2389tvb3t8ahwleuhtvab3iwuthabvlewiuweaqhaoiuhva98r3b2);
console.log("This won't show either");
});
第一个一个会在警告字符串时起作用,它会在警报后记录消息。
第二和第三个函数无效,因为它们正在尝试警告未定义的变量。他们随后的console.logs
将不会输出任何内容。
我的问题:是否可以在保持以下属性的同时防止第二功能的错误输出到控制台?:
console.log
仍然不执行编辑:这是一个小提琴 - https://jsfiddle.net/5m40LLmm/2/
SUPER EDIT:我不希望 second 函数中的逻辑执行真正改变。我 想要 抛出错误,.click()
处理程序应该在它到达console.log之前退出。我只想防止错误显示。在使用try
之前,我不想使用catch
和alert()
来规避错误或以某种方式检查变量是否存在。我知道并且想要错误发生,我只是想阻止它的显示。我希望这更清楚。
答案 0 :(得分:1)
运行此命令时,实际上从未调用console.log函数。警报功能失败,记录失败,并且单击侦听器功能退出。永远不会达到console.log()
。这意味着您只需要停止警报显示错误。这是try catch语句有用的地方。
$("#fix-this-error").click(function () {
try {
alert(this_should_not_show_up_in_the_console);
console.log("This won't show");
} catch (e) {
// Code jumps here when `alert()` fails.
// `e` stores information about the error
// If you don't want to put everything in the try/catch,
// you can stop the function from continuing execution with
return;
}
});
答案 1 :(得分:0)
使用typeof
关键字检查是否定义了特定变量。
$("#fix-this-error").click(function () {
if (typeof this_should_not_show_up_in_the_console !== "undefined")
{
alert(this_should_not_show_up_in_the_console);
console.log("This won't show");
}
});