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

Bre*_*mas 15 javascript function typeof

在PHP我写的是以下内容

<?php
if(x != 0) {
echo "function myfunction(){};";    
}
?>
Run Code Online (Sandbox Code Playgroud)

在javascript中我想测试函数是否存在,如果没有写出一个空函数

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

这在firefox中很有用,但是在chrome中,即使typeof等于函数,它仍会进入并创建空函数.我找不到一个解决方案的工作,我已经尝试了if(!myfunction),if(typeof window.myfunction!='function)但似乎没有什么似乎在这里工作,当一切似乎在Firefox中工作.有任何想法吗?

Que*_*tin 33

使用函数表达式,而不是函数声明.

if(typeof myfunction != 'function'){
   window.myfunction = function(){};
}
Run Code Online (Sandbox Code Playgroud)

(我正在使用,window因为你的上一段建议你想要一个全局函数)


Jua*_*ank 6

你应该使用严格的比较运算符!==

if(typeof myFunction !== 'function'){
    window.myFunction = function(){}; // for a global function or
    NAMESPACE.myFunction = function(){}; // for a function in NAMESPACE 
}
Run Code Online (Sandbox Code Playgroud)

还尝试将js函数保留在命名空间内,这样可以避免将来与其他js库发生冲突.