依靠Function.prototype.toString
返回一个将解析为有效javascript函数的字符串(对于用户定义的函数)是否安全?
是否有任何常用的javascript引擎偏离规范,只要它们以字符串形式表示函数对象?
我见过this question,但我不确定它是否在问同样的事情。我不在乎所有实现中的格式是否完全相同或者其他什么,我更担心一些缩小的js引擎只是剥离整个函数体......
另一个related question,但没有足够的密切关系来为这个问题找到令人满意的答案。
答案 0 :(得分:3)
我认为它是安全的,因为它是一个标准。每个严肃的引擎都会这样。这也是我的项目Jscex所依据的。它适用于所有浏览器(甚至是旧版IE6)和Node.js.我这一年做这件事。 :)
答案 1 :(得分:1)
应该注意,eval'd代码将采用当前范围,而Function构造函数将只占用全局范围。
function createClosure() {
var x = 20,
y = 10;
// Doesn't know what x & y are
var fn = new Function("return x + y");
// Evaluates normally
var result = eval("x + y");
}