如果存在,我想调用给定的函数。我写过:
var backgroundPage = window.chrome && chrome.extension &&
chrome.extension.getBackgroundPage ? chrome.extension.getBackgroundPage() : null;
我想知道是否有更好的方法可以将所有这些检查短路,如果存在则只调用chrome.extension.getBackgroundPage
?
如果我这样做
typeof chrome.extension.getBackgroundPage === 'function'
如果 chrome 或 chrome.extension 未定义,我仍会遇到错误。
在许多情况下,我可以使用实用功能,例如https://lodash.com/docs#get:
var getBackgroundPage = _.get(window, 'chrome.extension.getBackgroundPage');
但是对于我的特定情况,我无法使用实用程序库,因为完整代码用作lodash的加载程序。
答案 0 :(得分:1)
这是try...catch陈述的目的:
try {
object.p1.p2.p3;
}
catch (e) {
if (e.name === 'ReferenceError') {
// pass
}
}