确定是否存在静态命名的JavaScript函数以防止错误

mac*_*264 24 javascript function

我的网站上有一个脚本,在调用时调用静态命名的函数:

childLoad();
Run Code Online (Sandbox Code Playgroud)

childLoad()尽管始终调用该函数,但并不总是定义该函数.如果脚本不存在,如何阻止脚本调​​用此函数?

Mic*_*per 57

if ( typeof childLoad == 'function' ) { 
    childLoad(); 
}
Run Code Online (Sandbox Code Playgroud)


Joe*_*Joe 11

您可以使用短路评估:

childLoad && childLoad();
Run Code Online (Sandbox Code Playgroud)


编辑

('childLoad' in this) && childLoad && childLoad();
Run Code Online (Sandbox Code Playgroud)

这将确保childLoad可以引用,确保它没有未定义,然后调用该函数.它没有检查以确保它是一个功能,但我个人觉得这是不需要的.

注意:this如果您正在使用call或,可能不是您所指的上下文apply.这实际上取决于你的其余代码.

  • 好又短,但如果有一个名为childLoad的变量(但不是名为childLoad的函数),则会失败. (6认同)
  • 好吧,如果`childLoad`没有**定义**(例如以前没有声明),这将产生一个`ReferenceError`,因为范围链上不存在标识符... (2认同)

Jay*_*dra 6

if(typeof childLoad == 'function') {   
  childLoad();   
}
Run Code Online (Sandbox Code Playgroud)