这两个函数在幕后做的事情是一样的吗?(单语句函数方面)
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'));
new
?Function
隐式实例化了一个function object
。不使用new
不会改变代码。这里有一个 jsfiddle 演示:http://jsfiddle.net/PcfG8/ - Travis J