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);')()aFunction
守候你守候我
TA贡献1802条经验 获得超10个赞
new Functioneval
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
提交
取消
