依赖Function.prototype.toString
返回一个字符串,并将其解析为有效的javascript函数(对于用户定义的函数)是否安全?
有没有一些常用的javascript引擎在表示字符串形式的函数对象时偏离了标准?
我见过this question,但我不确定它是不是在问同样的问题。我不关心格式化在所有实现中是否完全相同,我更担心的是一些精简的js引擎只是剥离了整个函数体……
另一个related question,但关系不够密切,不足以对这个问题有一个令人满意的答案。
发布于 2011-12-10 04:59:41
我认为它是安全的,因为它是一个标准。每一台严肃的引擎都可以。这也是我的项目Jscex所基于的。它适用于所有浏览器(甚至是遗留的IE6)和Node.js。我多年来一直在做这样的事情。:)
发布于 2014-06-01 19:51:51
应该注意的是,eval的代码将采用当前作用域,而函数构造函数将只采用全局作用域。
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");
}
https://stackoverflow.com/questions/8454464
复制