zoukankan      html  css  js  c++  java
  • eval解析ajax传回的json字符串为什么要用括号

    javascript没有块级作用域,但可以用{}来分割代码,

    function say() { {
    var a = 1;
    }{
    //anotherCodeBlock
    }
    alert(a);
    }
    say(); // 仍然输出1

    当用eval解析时,{}会被理解为一个代码块的开始,不会理解成为一个对象字面量。 

    加()是为了迫使eval函数在评估JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行。

    JSON格式的名字部分为什么要加引号?
    因为eval函数会将{foo:”bar”}解释成合法的JavaScript语句,而非表达式。
    但是人们往往想要的是让eval将这段代码解释成一个对象。所以JSON格式会强制你去在名字的外侧加上引号再结合圆括号,这样eval就不会错误的将JSON解释成代码块。
    举例说明:
    alert(eval('{foo:"bar"}')); // return "bar"
    alert(eval('({"foo": "bar"})')); // return JSON object

    alert(eval("{}");  // return undefined
    alert(eval("({})");// return object[Object]
  • 相关阅读:
    CF1056G
    mysql xtrabackup 备份恢复
    linux yum源配置
    mysql 第24章 优化
    mysql 第23章 监控
    mysql 第22章 高可用MMM、MHA
    mysql 第21章 集群
    mysql 第20章 复制
    mysql 第19章 备份恢复
    mysql 第18章 导入导出
  • 原文地址:https://www.cnblogs.com/bigdesign/p/4045573.html
Copyright © 2011-2022 走看看