javascript - 如何访问 eval() 范围内的 javascript 函数

标签 javascript eval

我使用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/

相关文章:

javascript - firefox 中 CSV 文件的数据 URI 未放置 .csv 扩展名

javascript - 在 javascript 函数的参数中放置一个值

javascript - 事件保持绑定(bind)到僵尸实例

Python:如何使用字符串索引( '[0][1][0]')作为多维数组的索引

ruby-on-rails - 允许在 Ruby/Rails 应用程序中使用用户定义的脚本

javascript - 内容安全策略 'unsafe-eval' : How to avoid using eval() in javascript jquery. timer.js?

javascript - Threejs - 我的时间脚本有更好的性能

javascript - 如何在 HTML 文件中为外部 SVG 文件制作动画?

php - 也许 PHP eval 范围的事情?

php - 如何在 php 中安全地使用 eval?