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

Fal*_*per 1 javascript

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

如果用户键入:

x.isSingleLine()
Run Code Online (Sandbox Code Playgroud)

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

x.isSingleLine() || "Doesnt Exist";
Run Code Online (Sandbox Code Playgroud)

在某种程度上它会导致软错误或某种警报.我不想将对象封装在try-catch块中.

有没有办法可以实现这个目标?

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

Nik*_*off 6

那个怎么样?

  x.isSingleLine ? x.isSingleLine() : console.log("Doesnt Exist");
Run Code Online (Sandbox Code Playgroud)

编辑: 正如@FelixKling建议的那样,如果有可能isSingleLine存在但不是函数,你应该使用:

(x.isSingleLine && x.isSingleLine instanceof Function) ? x.isSingleLine() : console.log("Doesnt Exist");
Run Code Online (Sandbox Code Playgroud)


Roc*_*mat 5

调用之前,您需要检查它是否存在.

var result = x.isSingleLine ? x.isSingleLine() : "Doesn't Exist";
Run Code Online (Sandbox Code Playgroud)