代码函数声明没错呀,可能是你调用时出错了,没有把函数bert的引用传给a。 function a(bert){}这里的bert只是形参,并不一定就是 function bert()的引用。
这是作用域的问题。bert在全局是function,但在a()中,已经被参数覆盖了。
function a(o) { if(typeof o == "function") { o(); } } function bert() { alert("ok"); } a(bert)
或者把你调用的代码贴出来看看。 我想你的意思是: function a(bert) { if(typeof(bert)=="function") bert(); else alert("字符串") } function bert() { alert("bert"); } function bert2() { alert("bert2") } 调用: var str="abc" a(str); a(bert); a(bert2);
这样清晰一些: var isFunction = function(o){ return typeof o == "function"; } function a(obj){ if(isFunction(obj))obj.call(); else alert(obj); } a(function(){alert('is a function')}); a('is a string'); a(new Object());
function a(bert){}这里的bert只是形参,并不一定就是 function bert()的引用。
{
if(typeof o == "function")
{
o();
}
}
function bert()
{
alert("ok");
} a(bert)
我想你的意思是:
function a(bert)
{
if(typeof(bert)=="function")
bert();
else
alert("字符串")
}
function bert()
{
alert("bert");
}
function bert2()
{
alert("bert2")
}
调用:
var str="abc"
a(str);
a(bert);
a(bert2);
return typeof o == "function";
}
function a(obj){
if(isFunction(obj))obj.call();
else alert(obj);
}
a(function(){alert('is a function')});
a('is a string');
a(new Object());