我使用eval()
来执行服务器的ajax请求返回的javascript。但是,我无法调用使用 eval() 创建的函数并收到 ReferenceError: function is not Defined
。
无法访问使用 eval() 执行的 javascript 中的函数,这是正常现象吗?有没有办法访问这些功能?
我认为这个简单的 jsFiddle 说明了问题:http://jsfiddle.net/M2GLs/
最佳答案
创建的函数不在正确的范围内。所以你的 onclick 无法“看到”它。使用
window.addFeatureToTable = function() {
// definition
}
强制它在窗口范围内。
工作中JsFiddle
回答评论中的问题:
你实际拥有的是这样的代码:
function a()
{
function b(where) {
alert('b can be called inside a, but not outside, we are now ' + where);
}
b('inside');
}
a();
b('outside');
b
定义在 a
范围内,并且只能在该范围内访问 ( demo )。在您的情况下,函数定义位于 eval 内,但相同的规则也适用于此。在这种情况下,在function(r)
的范围内。您无法从 a.onclick
内访问此函数的作用域,因此您必须更改函数定义。或者,您可以在 eval ( jsFiddle ) 之后绑定(bind)点击,因为它仍然在范围内:
js = "function someFunction() { alert('function called') }"
eval(js)
document.getElementById('myA').onclick = someFunction;
关于javascript - 如何访问 eval() 范围内的 javascript 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25060685/