今天上代码的时候遇到了一个问题,代码做了压缩和混淆后,某变量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.
等~~关于啥全局变量定义之类~