在调用之前是否可以判断函数名称是否存在?
答案 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');}