首页 > 代码库 > eval()他是天使也是魔鬼

eval()他是天使也是魔鬼

eval 字面意思 :evaluate 评价 评估评价;

eval函数会评估一个给定的含有JavaScript代码的字符串,并且试图去执行包含在字符串里的表达式或者一系列的合法的JavaScript语句。eval函数将把最后一个表达式或者语句所包含的值或引用作为返回值。

事例代码:

var evalarray=["id","time","info"];
var e=eval(evalarray);
console.log(e);     //输出:[ ‘id‘, ‘time‘, ‘info‘ ]
var evalarray={"id":1,"time":"15:21","info":"student"};
var e=eval(evalarray);
console.log(e);   //输出{ id: 1, time: ‘15:21‘, info: ‘student‘ }
var x= 2,y=5;
var e=eval("x+y");
console.log(e);   //输出 7
console.log(eval(‘{timer:"hello"}‘));   //  输出   hello

加上圆括号的目的是迫使eval函数在评估JavaScript代码的时候强制将括号内的表达式转化为对象而不是作为语句来执行。

例如对象字面量{},

console.log(eval("{}")); // 输出 undefined
console.log(eval("({})"));// 输出 {}

如若不加外层的括号,那么eval会将大括号识别为JavaScript代码块的开始和结束标记,

那么{}将会被认为是执行了一句空语句。所以下面两个执行结果是不同的。

evel接受任意的字符串,并当作JavaScript代码来处理。当有问题的代码是事先知道的(不是运行时确定的),没有理由使用eval(),准确地说他是魔鬼!


eval()他是天使也是魔鬼