如何替代JavaScript中的eval()语句

1、问题概述?

eval()在javaScript中被用于将JSON数组转化成数组,但是在有一些代码平台质量管控中,会提示如下错误信息:

禁用eval()
JavaScript中的eval()函数是有潜在危险,而且经常被误用。在不可信的代码里使用eval()有可能使程序受到不同的注入攻击。

2、如何替代eval()

替代方案方案非常多,介绍使用jQuery的方式替代eval()

【后端返回值】

后端可采用@ResponseBody将对象转化成json字符串。

[
  {"name":"晓春","sex":"男","age":"30","address":"安徽合肥","password":"123456"},
   {"name":"十一郎","sex":"男","address":"安徽合肥","password":"123456"},
]

2.1、原有的eval()方案

提示:eval()是一个危险的函数,它使用与调用者相同的执行权限......

$.ajax({
   type:"get",
   url:"/test"
   cache:false,
   dataType:"text",
   success:function(data){
     var result = eval(data);       
     for(var i=0;i<result.length;i++){
        console.log(result[i].name);
     }
   }
});

2.2、jQuery的$.each替代方案

替代方案中使用了jQuery的each循环替代了原有的eval用法

定义数组的时候建议使用如下方式:

var result=[];否则会提示:The array literal notation [] is preferable.(no-array-constructor)

$.ajax({
   type:"get",
   url:"/test"
   cache:false,
   dataType:"text",
   success:function(data){
     var jsonData=JSON.parse(data);
     var result=[];//代码规则不建议使用var result=new Array();
     $.each(jsonData,function(index,obj){
         result.push(obj);
     });
    
     for(var i=0;i<result.length;i++){
        console.log(result[i].name);
     }

   }
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雾林小妖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值