如果函数不存在写函数--javascript

时间:2012-01-12 17:05:00

标签: javascript function typeof

在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中工作。有什么想法吗?

2 个答案:

答案 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库发生冲突。