eval函数

  • 作用:将字符串转换成可执行的JS代码。
  • 场景使用1:
    这是一个数组用“+”连接转换成的字符串再转换成代码执行求和的例子。
var arr = [1, 2, 3, 4, 5];
var total = eval(arr.join("+"));
console.log(total);  // --> 15

步骤解析:

1)var str = arr.join("+");  //-->  "1+2+3+4+5"
2)eval(str);  //-->  eval("1+2+3+4+5")
3)var total = 1+2+3+4+5;  //-->15
  • 场景使用2:
    将Json格式的字符串转换为Json格式的对象。在window浏览器对象下,有个JSON属性,提供了parse和stringify两个方法,但是这个JSON属性在IE 6-7下没有,所以使用时应做兼容处理,以下是处理parse这个方法。
function toJson(jsonStr){
    var jsonObj = null;
    try{
        jsonObj = JSON.parse(jsonStr);
    }catch(e){
        jsonObj = eval("("+ jsonStr +")");
    }
    return jsonObj;
}
var str = '{"name":"zzq"}';
console.log(toJson(str));  //-->Object {"name": "zzq"} 

注意:

 jsonObj = eval("("+ jsonStr +")");

不能写成 jsonObj = eval( jsonStr ); 因为在使用eval来解析json格式字符串的时候,会将“{ }”解析为代码块,而不是字面量。所以需要添“()”来避免这种情况。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • eval函数会把字符串按照php代码来执行。 如果字符串是合法的php脚本,则eval会返回字符串中return的...
    何幻阅读 1,721评论 0 0
  • var txt = '{ "employees" : [' +'{ "firstName":"Bill" , "l...
    金星show阅读 1,162评论 0 0
  • 今天工作中看见了一段代码,其中有一个eval()函数,没有见过,故查之。 功能:将字符串str当成有效的表达式来求...
    静行vchh阅读 2,721评论 0 0
  • 每个人都有自己的选择,难道只有按照你们的想法走,才是对的么?
    so八千米深海七厘米蔚蓝阅读 146评论 0 0
  • 昨晚由木君来了电话,不知是因为太久没有和她聊天还是打开了话匣子产生了共鸣,聊了近一个小时。 由木,何许人也?她是我...
    游弋恶灵阅读 615评论 1 1