Javascript中如何判断函数是否存在

tokimemo 2011-08-16 03:46:18
应用情景:页面传入特定的字符串给init函数(如abc),init函数判断是否存在该字符串为函数名的函数。
如var abc=function()或function abc。有则调用,没有则不予理睬。
由于以字符串为函数名的函数数量很大(可能大于100个)而且字符串会变化,无法一次写好所有的函数,需要动态调用。

现在我使用(typeof(eval(字符串获取函数())) == 'function')来判断是否存在,但是总是报错。
ie提示找不到“字符串获取函数”(如,找不到abc)。
请问大家,如何判断脚本中是否有我需要的函数。或者有其他什么办法。
...全文
469 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
birdking2006 2011-08-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 tokimemo 的回复:]

sorry,应该是
JScript code


var hello = function () {
alert("hello world");
};
[/Quote]

你这样写跑不起?
我就是在ie8上跑的
tokimemo 2011-08-16
  • 打赏
  • 举报
回复
sorry,应该是


var hello = function () {
alert("hello world");
};

tokimemo 2011-08-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 birdking2006 的回复:]
sorry

然后typeof eval("abc") = function
搞定~~
[/Quote]
我就是这样用的,不过不起作用,原来是ie6环境,没有测试但是没有问题。
升级到ie8后就有问题了,不知道是浏览器问题还是语句问题。
这个是我原来的代码,如果getString函数返回的是world,示例中的代码结果总是提示“找不到world”

<script type="text/javascript">
//<![CDATA[

function init() {
if(typeof(eval(getString())) == 'function'){//原来的判断语句
eval(getString());
}
};


function hello() {
alert("hello world");
};

function getString(){
return "hello";//获取字符,这里用hello代替
}

//]]>


我正好是truelove12所说的那种情况,测试通过。
dulei123321 2011-08-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 birdking2006 的回复:]

sorry

然后typeof eval("abc") = function
搞定~~
[/Quote] very right
  • 打赏
  • 举报
回复
如果你的函数都在全局环境中,可以这样


<script type="text/javascript">
//<![CDATA[

function init(funName) {
if (funName in window) {
alert("存在");
}
else {
alert("不存在");
}
};


function sayHello() {
alert("hello world");
};

init("sayHello");

//]]>

birdking2006 2011-08-16
  • 打赏
  • 举报
回复
sorry

然后typeof eval("abc") = function
搞定~~
birdking2006 2011-08-16
  • 打赏
  • 举报
回复
你的function需要这么写:

var abc = function(){
alert(123);
}

然后typeof eval("loginLoad") = function
搞定~~

87,916

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧