val()和新函数()是同一回事吗?这两个函数在幕后做同样的事情吗?(单语句函数)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'));
3 回答
繁华开满天机
TA贡献1816条经验 获得超4个赞
eval()
将字符串计算为当前执行范围内的JavaScript表达式,并可以访问局部变量。 new Function()
将存储在字符串中的JavaScript代码解析为函数对象,然后调用函数对象。它无法访问局部变量,因为代码在单独的作用域中运行。
function test1() { var a = 11; eval('(a = 22)'); alert(a); // alerts 22}
new Function('return (a = 22);')()
a
Function
守候你守候我
TA贡献1802条经验 获得超10个赞
new Function
eval
function makeFunction() { var params = []; for (var i = 0; i < arguments.length - 1; i++) { params.push(arguments[i]); } var code = arguments[arguments.length - 1]; // Creates the anonymous function to be returned // The following line doesn't work in IE // return eval('(function (' + params.join(',')+ '){' + code + '})'); // This does though return eval('[function (' + params.join(',')+ '){' + code + '}][0]');}
添加回答
举报
0/150
提交
取消