javascript:如何判断函数名存在?

时间:2010-11-30 11:59:33

标签: javascript jquery

在调用之前是否可以判断函数名称是否存在?

3 个答案:

答案 0 :(得分:4)

您为该功能检查typeof,例如:

if(typeof this["functionName"] != "undefined") {
  alert("uh oh, doesn't exist");
}

如果你需要检查它是否存在并且是一个更加确定的功能:

if(typeof this["functionName"] == "function") {
  this["functionName"](); //it exists, call it
}

或者更轻松的版本:

if(this["functionName"]) this["functionName"]();

如果名称没有改变(例如我误解了问题),只需使用点符号,如下所示:

if(this.functionName) this.functionName();

当然,它不一定是this ...无论你正在检查什么对象,如果是全局函数,请使用window

答案 1 :(得分:1)

在很大程度上取决于你所处的范围。

但总的来说,if( 'function_name_to_check' in this)如果全局或本地范围内有一个具有该名称的属性,则会返回true

此检查后面必须另外检查类型:

if( typeof this.function_name_to_check === 'function') { }

确保这是一个功能。

答案 2 :(得分:0)

如果您只想避免错误,可以转动表格:

try{function2call();}
catch(e){alert('function2call() doesn\'t exist');}