将字符串求值为可调用的JS函数
Eval a string to a callable JS function
我需要评估一个保持为字符串的函数,然后在JS代码中使用它,下面是场景:
步骤1
<textarea id="function_text">function test(e){ alert(e.id); }</textarea>
步骤2
var thatFunction = eval($("#function_text").val()); // returns undefined
步骤3
thatFunction.call({id: 100});
有办法做到这一点吗?
附言:我知道所有的安全考虑,我只需要在第三步提醒100!
我要给你一个警告,不要这样做,但方法如下:
var thatFunction = Function('return ' + $("#function_text").val())();
thatFunction.call({id: 100});
字符串中的代码将被计算为函数声明,而不会产生返回值,这就是eval
返回undefined
的原因。
您可以将函数声明与变量赋值连接起来:
eval('var thatFunction = ' + $("#function_text").val());
或只需按其名称(您知道的)调用函数:
test.call({id: 100});
您可能不希望在字符串中使用变量名。这不是问题,您所要做的就是强制eval
将函数定义视为函数表达式,并让它返回函数。例如,您可以使用分组运算符:来完成此操作
var thatFunction = eval('(' + $("#function_text").val() + ')');
一种更模糊的方法是逗号运算符:
var thatFunction = eval('0,' + $("#function_text").val());
相关文章:
- 如何从Java/scala调用js美化程序
- 是否可以在使用headerphp函数后自动调用JS函数
- 全局窗口热键在最小化chrome窗口时调用js函数
- 当用户点击动态创建的链接时,如何调用JS方法.JQuery,ASP.NET MVC
- 从PHP调用JS函数不起作用
- 如何从构造函数中调用js原型方法
- 从加载的页面调用js页面
- 在shtml中调用js函数
- 当调用JS函数具有alert()时,应用程序将被冻结
- 无法从onclick事件调用JS函数
- 如何在自动完成更新时调用JS函数
- 在单击浏览器选项卡上调用 js 函数
- 从 PHP 文件调用 js 函数
- 尝试在 PHP 代码中调用 js 函数
- 同时调用js函数yui
- 提交按钮的点击元素不调用JS函数
- 使用onclick和javascript函数,在参数中调用js-var
- 在另一个.js文件中调用js函数
- 使用grunt在angular指令中调用js文件
- 在JS文件中设置延迟以调用JS文件