【发布时间】:2011-06-03 17:54:39
【问题描述】:
这两个函数在幕后做同样的事情吗? (在单语句函数中)
var evaluate = function(string) {
return eval('(' + string + ')');
}
var func = function(string) {
return (new Function( 'return (' + string + ')' )());
}
console.log(evaluate('2 + 1'));
console.log(func('2 + 1'));
【问题讨论】:
-
实际上这是在 jQuery 1.7.2 第 573 行中使用的。虽然带有“一些安全检查”
-
为什么在这个讨论中考虑
new?Function隐式实例化function object。排除new根本不会更改代码。这是一个 jsfiddle 证明:jsfiddle.net/PcfG8
标签: javascript function optimization eval