好的,我有这个小代码
http://jsfiddle.net/laupkram/yJtyD/
现在它并没有真正起作用。我一直在关注 SO 中所有现有的问题和答案,但我无法弥补。
我真的很想在不使用 eval() 的情况下调用函数
我哪里错了?
好的,我有这个小代码
http://jsfiddle.net/laupkram/yJtyD/
现在它并没有真正起作用。我一直在关注 SO 中所有现有的问题和答案,但我无法弥补。
我真的很想在不使用 eval() 的情况下调用函数
我哪里错了?
你有一个错字(imafunc/iamfunc
),纠正它&你可以(假设全局范围);
var fn = window["iamfunc"];
if (typeof fn === 'function') {
fn("hello world");
}
您不能直接执行字符串。如果字符串指定的函数是全局定义的,您可以通过以下方式访问该函数
window[ fn ]();
因此,在您的情况下,这会将您的代码转换为以下内容:
var fn = "imafunc";
if (typeof window[ fn ] === 'function') {
window[ fn ]("hello world");
}
function imafunc(str) {
alert(str);
}
如果该函数仅在另一个函数的范围内定义,则必须求助于eval
,这有一些性能劣势并且通常被认为是不好的做法(例如,参见 MDN)。
PS:这在 jsFiddle 中不起作用,因为他们使用沙盒,这就像imafunc()
在另一个函数中定义一样。您必须更改包装以使用“无包装”。