为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

跃然一笑 2019-10-14 14:26:40
我按照本指南创建了一个用于通讯的新JS。我的代码是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?(以下任何一种方法都不能尝试抓到一件作品)
查看完整描述

3 回答

?
暮色呼如

TA贡献1853条经验 获得超9个赞

尝试这样的事情:


if (typeof me.onChange !== "undefined") { 

    // safe to use the function

}

或更好(根据UpTheCreek的评论)


if (typeof me.onChange === "function") { 

    // safe to use the function

}


查看完整回答
反对 回复 2019-10-14
?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

我有这个问题。


if (obj && typeof obj === 'function') { ... }

如果碰巧未定义obj,则会不断抛出引用错误。


最后,我执行了以下操作:


if (typeof obj !== 'undefined' && typeof obj === 'function') { ... }

一位同事向我指出的是检查,如果它的!== 'undefined',然后=== 'function'是多余的,当然。


更简单:


if (typeof obj === 'function') { ... }

更清洁,效果很好。


查看完整回答
反对 回复 2019-10-14
?
隔江千里

TA贡献1906条经验 获得超10个赞

如果您正在使用eval将字符串转换为函数,并且要检查此eval'd方法是否存在,则需要在eval中使用typeof和函数字符串:


var functionString = "nonexsitantFunction"

eval("typeof " + functionString) // returns "undefined" or "function"

不要颠倒这个,在eval上尝试使用typeof。如果执行ReferenceError,将抛出:


var functionString = "nonexsitantFunction"

typeof(eval(functionString)) // returns ReferenceError: [function] is not defined


查看完整回答
反对 回复 2019-10-14
  • 3 回答
  • 0 关注
  • 466 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号