我有我的网站的脚本调用时调用一个静态命名函数:确定是否静态命名的JavaScript函数的存在是为了防止错误
childLoad();
的childLoad()
函数并不总是定义,虽然它总是叫。如果脚本不存在,我怎么能阻止脚本调用这个函数?
我有我的网站的脚本调用时调用一个静态命名函数:确定是否静态命名的JavaScript函数的存在是为了防止错误
childLoad();
的childLoad()
函数并不总是定义,虽然它总是叫。如果脚本不存在,我怎么能阻止脚本调用这个函数?
你可以使用短路评价:
childLoad && childLoad();
('childLoad' in this) && childLoad && childLoad();
这将确保childLoad
可以参考,可以确保它不是不确定的,则调用该函数。它不检查以确定它是一个功能,但我个人觉得这是不需要的。
注意:如果您使用的是call
或apply
,则this
可能不是您所指的上下文。这真的取决于你的其他代码。
你可以简单地检查:
if (childLoad)
childLoad()
在Chrome中失败。 typeof方法有效\ –
if (typeof childLoad == 'function') {
childLoad();
}
if(typeof childLoad == 'function') {
childLoad();
}
你可以围绕着它在尝试捕捉!
<script>
/* yourfunction */
if(typeof yourfunction == 'function') {
yourfunction();
}
function yourfunction(){
//function code
}
</script>
的
尽管此代码可能回答此问题,但提供 有关_why_和/或_how_此代码的其他上下文 回答此问题将显着改善其 的长期价值。请[编辑]你的答案,添加一些 的解释。 –
可能重复的[确实的对象/函数存在?](http://stackoverflow.com/questions/5848700/does-an-object-function-exists) –
@AndreasNiedermair否,在技术上每个问题是相同的一般场景,但是上下文是这个问题是关于一个*静态*命名的函数,它在你引用的问题是查询一个*动态*命名函数时永远不会改变。 – John