<script type="text/javascript">
var a = function(msg){ //1
var datas = eval(msg);
alert(datas.success);
//2
var datas = eval("(" + msg + ")");
alert(datas.success); //3
eval("datas=" + msg);
alert(datas.success);
};a("{success:true}");</script>三个alert,打印的结果为什么不同??这三段js有什么不同,第二端,为什么,要加小括号,奇怪,请高手指教???
该函数会将参数中的字符串当做javascript代码来运行。
var a = function(msg){ //1
var datas = eval(msg);
//将字符串转换成js对象,如果字符串中有特殊的符合;如换行什么的可能无法转换成功
alert(datas.success);
//2
var datas = eval("(" + msg + ")");
//这里加括号可以转换带换行等特殊字符的字符串
alert(datas.success); //3
eval("datas=" + msg);
//这里其实少了个var ,eval("var datas=" + msg);和上面的基本一样,就是直接转换成js变量
alert(datas.success);
};a("{success:true}");</script>
第二个,我还是不是很明白,就算他 转换成 带换行等特殊字符的字符串,那也不代表他就是Json对象哦??是不,请赐教!!
注意中间的\n
var a = function(msg){
//2
var datas = eval("(" + msg + ")");
//var datas = eval(msg);
//这里加括号可以转换带换行等特殊字符的字符串
alert(datas.success);
};a("{success:'hello world',\n error:'error'}");