首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何检查JavaScript中是否存在函数?

如何检查JavaScript中是否存在函数?
EN

Stack Overflow用户
提问于 2009-06-25 04:10:54
回答 34查看 662.3K关注 0票数 729

我的代码是

代码语言:javascript
运行
复制
function getID( swfID ){
     if(navigator.appName.indexOf("Microsoft") != -1){
          me = window[swfID];
     }else{
          me = document[swfID];
     }
}

function js_to_as( str ){
     me.onChange(str);
}

但是,有时我的onChange不加载。防火墙错误

me.onChange不是一个函数

我想优雅地降级,因为这不是我的程序中最重要的特性。typeof给出了同样的错误。

关于如何确保它的存在,然后只执行onChange的任何建议

(除了尝试捕捉一项工作外,以下所有方法都没有)

EN

回答 34

Stack Overflow用户

回答已采纳

发布于 2009-06-25 04:14:24

试着做这样的事情:

代码语言:javascript
运行
复制
if (typeof me.onChange !== "undefined") { 
    // safe to use the function
}

或者更好一些(根据UpTheCreek的投票结果)

代码语言:javascript
运行
复制
if (typeof me.onChange === "function") { 
    // safe to use the function
}
票数 1.5K
EN

Stack Overflow用户

发布于 2013-02-06 23:27:50

我有这个问题。如果if (obj && typeof obj === 'function') { ... }碰巧是undefined,那么obj会一直抛出一个引用错误,所以最后我做了以下操作:

代码语言:javascript
运行
复制
if (typeof obj !== 'undefined' && typeof obj === 'function') { ... }

然而,一位同事向我指出,检查它是否是!== 'undefined',然后检查=== 'function'是否是多余的,因此:

更简单:

代码语言:javascript
运行
复制
if (typeof obj === 'function') { ... }

干净得多,效果也很好。

票数 151
EN

Stack Overflow用户

发布于 2020-03-03 15:57:20

现代JavaScript到救援!

代码语言:javascript
运行
复制
me.onChange?.(str)

可选链语法(?.)解决了这个问题。

在上面的示例中,如果一个me.onChange属性存在并且是一个函数,则调用它。

如果不存在me.onChange属性,则什么都不会发生:表达式只返回undefined

Note -如果存在me.onChange属性但不是函数,则会抛出TypeError,就像调用JavaScript中的任何非函数一样。可选的链子并不能使这件事消失。

票数 133
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1042138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档