JS。某eval。

来源:互联网 发布:silverlight js交互 编辑:程序博客网 时间:2024/05/16 18:09

今天上代码的时候遇到了一个问题,代码做了压缩和混淆后,某变量undefined。

 

跟踪才发现原来某变量定义在 eval 中。导致混淆时将在其中定义的变量漏掉,导致后续变量 undefined。

 

对于eval,学习过很多次,每次学了每次忘,总是不知道它是干什么的。。只记得曾经把一陀螺数据(字符串)转化为了一个对象。今天栽它头上,郁闷!

 

1.

 

alert(eval('{a:2}')); // 2

 

eval函数接收一个参数s,如果s不是字符串,则直接返回s。否则执行s语句。如果s语句执行结果是一个值,则返回此值,否则返回undefined。

 

 

var code = 'var s="dd"';

var test1 = eval(code);

alert(s); // dd

alert(test1); // undefined

 

var code1='"a" + 2';

alert(eval(code1)); //a2

 

 

2.

 

var test1 = eval("({vte:2})");

alert(test1); // object

 

对于对象声明语句来说,仅仅是执行,并不能返回值。为了返回常用的“{}”这样的对象声明语句,必须用括号括住,以将其转换为表达式,才能返回其值。

 

var test = "{a:1}";

var test1 = eval ("(" + test + ")");

alert(test1); // object

 

3. 

 

等~~关于啥全局变量定义之类~

原创粉丝点击