猿问

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

我按照本指南创建了一个用于通讯的新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?


(以下任何一种方法都不能尝试抓到一件作品)


跃然一笑
浏览 467回答 3
3回答

暮色呼如

尝试这样的事情:if (typeof me.onChange !== "undefined") {     // safe to use the function}或更好(根据UpTheCreek的评论)if (typeof me.onChange === "function") {     // safe to use the function}

凤凰求蛊

我有这个问题。if (obj && typeof obj === 'function') { ... }如果碰巧未定义obj,则会不断抛出引用错误。最后,我执行了以下操作:if (typeof obj !== 'undefined' && typeof obj === 'function') { ... }一位同事向我指出的是检查,如果它的!== 'undefined',然后=== 'function'是多余的,当然。更简单:if (typeof obj === 'function') { ... }更清洁,效果很好。

隔江千里

如果您正在使用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
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答