Js中eval()的用法

1.eval的基本用法

eval函数接收一个参数s,如果s不是字符串,则直接返回s。否则执行s语句。如果s语句执行结果是一个值,则返回此值,否则返回undefined。需要特别注意的是对象声明语法“{}”并不能返回一个值,需要用括号括起来才会返回值。
var code1 = "'a' + 2" ;
var code2 = '{ a : 2}' ;
var code3 = "({ a : 2})" ;
document.write("code='a' + 2	Result:" + eval(code1) + " <br>"); //--> a2 
document.write("code={ a : 2}	Result:" + eval(code2) + "<br>");  //--> 2
document.write("code=({ a : 2})	Result:" + eval(code3) + "<br>");  //--> [object Object]

2.eval作用域的性质

eval函数的特点,它总是在调用它的上下文变量空间(也称为:包,closure)内执行,无论是变量定义还是函数定义都是如此
var s='global'; //定义一个全局变量
function demo1(){ 
eval('var s="local"'); 
} 
demo1(); 
alert(s); //-->global 

var s='function test(){return 1;}'; //一个函数定义语句 
function demo2(){ 
eval(s); 
alert(test());//在demo2内部可以执行
} 
demo2(); 
alert(test()); //在demo2外部执行则会报错,说明eval总是在调用它的closure内执行




3.在全局空间调用eval()





var X2={} //my namespace:) 
X2.Eval=function(code){ 
if(!!(window.attachEvent && !window.opera)){ 
//ie 
execScript(code); 
}else{ 
//not ie 
window.eval(code); 
} 
}
		
//测试
var s='global'; 
function demo3(){ 
X2.Eval('var s="local"'); 
} 
demo3(); 
alert(s); //->'local' 

4.eval()解析json字符串

如果生成的字符串是JsonArray 形如[{"name":"boke"},{"age":"23"}], 我们可以直接使用eval([{"name":"boke"},{"age":"23"}])生成相应的JSON对象;
如果生成的字符串是JsonObj  形如{“name":"boke","age":"23"},我们使用eval({“name":"boke","age":"23"})生成JSON对象时就会出错 ,我们需要这样写eval(({“name":"boke","age":"23"}))。
var jsonArray = "[{'name':'boke'},{'age':'23'}]";
var jsonObj = "{'name':'boke','age':'23'}";

document.write("Parse JsonArray:	" + eval(jsonArray)[0].name + "<br>");  //-->boke
document.write("Parse JsonObj:	" + eval("(" + jsonObj + ")").age);		//-->23
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值