如何将Javascript函数定义为未定义且仍可调用?

当我写作

window.external.AddSearchProvider

在Internet Explorer 11中我得到“未定义”,但我仍然可以调用并使用该功能.在Chrome中,该方法已定义并可用.

如果我写

"AddSearchProvider" in window.external

我在Internet Explorer和Chrome中都“真实”.

这是预期的行为吗?我的印象是我可以检查我是否可以通过检查它是否被定义来使用函数,还是我误解了?

最佳答案 window.external.AddSearchProvider不是“普通”的javascript函数.它是浏览器提供的本机功能,每个浏览器都以不同的方式处理它.

当您在浏览器javascript控制台中键入window.external.AddSearchProvider时,您会在浏览器的javascript中看到此值的表示形式.大多数浏览器实现了其本机功能的表示,但似乎Internet Explorer没有,因此您看到未定义,因为控制台没有值可显示.但是该函数是可调用的.

例如,您可以使用这样的方法将其视为对象

toJavascriptValue : function() {
    return undefined;
}
点赞