当我写作时
window.external.AddSearchProvider
在 Internet Explorer 11 中,我得到“未定义”,但我仍然可以调用和使用该函数。在 Chrome 中,该方法已定义且可用。
如果我写
"AddSearchProvider" in window.external
我在 Internet Explorer 和 Chrome 中都得到“true”。
这是预期的行为吗?我的印象是我可以通过检查函数是否已定义来检查我是否可以使用该函数,还是我误解了它?
最佳答案
window.external.AddSearchProvider
不是“普通”javascript 函数。它是浏览器提供的 native 功能,每个浏览器的处理方式不同。
当您在浏览器 javascript 控制台中键入 window.external.AddSearchProvider
时,您会在浏览器的 javascript 中看到该值的表示形式。大多数浏览器都实现了其 native 功能的表示,但 Internet Explorer 似乎没有,因此您会看到 undefined
,因为控制台没有可显示的值。但该函数是可调用的。
举个例子,你可以把它看成一个对象,有这样的方法
toJavascriptValue : function() {
return undefined;
}
关于javascript - Javascript 函数怎么可能未定义但仍然可以调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32951040/