我正在编写一个使用javascript并以某种方式创建继承的程序。
如果用户键入:
x.isSingleLine()
并且它不存在,它崩溃了Javascript。我希望有办法做一些事情:
x.isSingleLine() || "Doesnt Exist";
以某种方式让它出现软错误或某种警报。我不想将对象封装在try-catch块中。
有没有办法可以实现?
在声明中: x.isSingleLine()|| “不存在”; 它会崩溃而不会执行OR部分,所以这显然不是答案。
答案 0 :(得分:6)
怎么样?
x.isSingleLine ? x.isSingleLine() : console.log("Doesnt Exist");
修改强>
正如@FelixKling所建议的,如果isSingleLine
存在(x.isSingleLine && x.isSingleLine instanceof Function) ? x.isSingleLine() : console.log("Doesnt Exist");
但是不是函数,你应该使用:
{{1}}
答案 1 :(得分:5)
在调用之前,您需要检查它是否存在。
var result = x.isSingleLine ? x.isSingleLine() : "Doesn't Exist";
答案 2 :(得分:1)
据我所知,你可以使用try-catch块:
try {
x.isSingleLine();
} catch (e) {
// Something happened
alert("isSingleLine didn't quite work out.");
}
中使用它
<强>更新强> 我现在注意到你不想封装在try-catch块中。使用try-catch块甚至可以处理isSingleLine()方法中的错误,如updated fiddle所示。
答案 3 :(得分:0)
(x.isSingleLine || function(){
console.log("Doesn't Exist");
})()