eval()他是天使也是魔鬼

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

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

事例代码:spa

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代码的时候强制将括号内的表达式转化为对象而不是做为语句来执行。code

例如对象字面量{},对象

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

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

那么{}将会被认为是执行了一句空语句。因此下面两个执行结果是不一样的。字符串

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

相关文章
相关标签/搜索