如何在JavaScript的一行中调用一个可能不存在的方法,没有错误?

时间:2013-07-22 13:25:24

标签: javascript

我正在编写一个使用javascript并以某种方式创建继承的程序。

如果用户键入:

x.isSingleLine()

并且它不存在,它崩溃了Javascript。我希望有办法做一些事情:

x.isSingleLine() || "Doesnt Exist";

以某种方式让它出现软错误或某种警报。我不想将对象封装在try-catch块中。

有没有办法可以实现?

在声明中: x.isSingleLine()|| “不存在”; 它会崩溃而不会执行OR部分,所以这显然不是答案。

4 个答案:

答案 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.");
}

this fiddle

中使用它

<强>更新 我现在注意到你不想封装在try-catch块中。使用try-catch块甚至可以处理isSingleLine()方法中的错误,如updated fiddle所示。

答案 3 :(得分:0)

(x.isSingleLine || function(){
    console.log("Doesn't Exist");
})()