在php中我写了以下内容
<?php
if(x != 0) {
echo "function myfunction(){};";
}
?>
在javascript中我想测试函数是否存在,如果没有写出空函数
if(typeof myfunction != 'function'){
function myfunction(){};
}
这在firefox中很有用,但是在chrome中,即使typeof等于函数,它仍会进入并创建空函数。我找不到一个解决方案的工作,我已经尝试了if(!myfunction),if(typeof window.myfunction!='function)但似乎没有什么似乎在这里工作,当一切似乎在Firefox中工作。有什么想法吗?
答案 0 :(得分:32)
使用函数表达式,而不是函数声明。
if(typeof myfunction != 'function'){
window.myfunction = function(){};
}
(我使用window
,因为你的上一段建议你想要一个全局函数)
答案 1 :(得分:6)
您应该使用严格比较运算符!==
if(typeof myFunction !== 'function'){
window.myFunction = function(){}; // for a global function or
NAMESPACE.myFunction = function(){}; // for a function in NAMESPACE
}
还尝试将js函数保留在命名空间内,这样可以避免将来与其他js库发生冲突。