码迷,mamicode.com
首页 > 其他好文 > 详细

eval()他是天使也是魔鬼

时间:2014-09-20 04:38:47      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:style   使用   java   ar   sp   问题   代码   log   on   

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()他是天使也是魔鬼

标签:style   使用   java   ar   sp   问题   代码   log   on   

原文地址:http://my.oschina.net/u/1861097/blog/316421

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!