eval 只有一个参数,如果传入的参数不是字符串,它直接返回这个参数,如果参数是字符串,它会把字符串当成js代码进行编译,如果编译失败抛出一个语法错误,编译成功,,则开始值行代码并,反回字符串中的最后一个表达式或语句的值,如果字符串抛出一个异常,这个异常将把该调用传递给eval
vbar geval = eval;
var x = "global" , y ="global";
function f(){
var x = "local";
eval("x+='changed';"); //更改了局部变量的值
return x;
}
function g(){
var y = "local";
geval("y+='cheanged';"); //间接调用改变了全局变量的值
return y;
}