eval()和Function()都可以执行字符串表达式;
不同的是eval()返回的是表达式的结果,Function()返回的是为表达式创建的匿名函数;
eval()可以干扰作用域链,不管你在哪里执行 Function(),它只看到全局作用域。
eval()中不能执行自执行函数字符串,符串内容是一个函数,使用Function()参数中字符串前拼接return,使 Function()构建的函数返回字符串对应的函数;
var str='function expression(args) { return "value"; }';
console.log(eval(str+'()')); //Invalid or unexpected token
var ff=new Function('return '+str);
console.log(ff()());//value