`
javawangli
  • 浏览: 224394 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

javascript eval函数解析json数据时为什么 加上圆括号

阅读更多

javascript eval函数解析json数据时为什么 加上圆括号?

 

var sts=eval("("+xhr.responseText+")"); 强制转化成json对象

 

 

为什么要 eval这里要添加 “("("+data+")");//”呢?

 

原因在于:eval本身的问题。 由于json是以”{}”的方式来开始以及结束的,在JS中,它会被当成一个语句块来处理,所以必须强制性的将它转换成一种表达式。

加上圆括号的目的是迫使eval函数在处理JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行。举一个例子,例如对象字面量{},如若不加外层的括号,那么eval会将大括号识别为JavaScript代码块的开始和结束标记,那么{}将会被认为是执行了一句空语句。所以下面两个执行结果是不同的:
alert(eval("{}"); // return undefined
alert(eval("({})");// return object[Object]

对于这种写法,在JS中,可以到处看到。

分享到:
评论

相关推荐

    巧用eval解析json对象

    本篇将聚焦于如何巧妙地使用`eval`函数来解析JSON对象,虽然在实际开发中,由于安全考虑我们通常会避免使用`eval`,但理解其工作原理对于学习JavaScript和JSON解析至关重要。 首先,JSON对象本质上是符合JSON语法的...

    javascript中eval解析JSON字符串.docx

    ### JavaScript中eval解析JSON字符串详解 #### 一、前言 在JavaScript开发中,解析JSON字符串是一项常见的任务。其中一种方法是使用`eval()`函数。虽然这种方法并不推荐,但了解其工作原理及其潜在风险仍然非常...

    用jquery解析JSON数据的方法20110227

    如果jQuery异步请求(例如`$.ajax`、`$.get`或`$.post`)设置了`dataType`参数为"json",或者使用`$.getJSON()`方法,jQuery会自动将响应数据解析为JavaScript对象,无需使用`eval()`。这是更安全且推荐的做法。...

    javascript eval和JSON

    如果没有圆括号,`eval`可能会误将JSON数据解析为语句而不是对象。例如,`{}`会被误认为是一条空语句而不是一个空对象。 ```javascript alert(eval("{}")); // undefined alert(eval("({})")); // [object Object] ...

    jquery解析JSON数据的方法.docx

    在jQuery早期版本和一些不支持JSON解析的浏览器中,经常使用`eval()`函数将JSON字符串转化为JavaScript对象。例如: ```javascript var data = "{'root': [{'name':'1','value':'0'}, {'name':'6101','value':'北京...

    使用PHP解析JSON数据1

    然后,我们使用JavaScript的`eval()`函数来解析这个字符串,将其转化为JavaScript对象。`eval()`函数执行其接收到的字符串作为JavaScript代码。在这个例子中,我们将JSON字符串传递给`eval()`,使其转换为可以操作的...

    javascript中eval解析JSON字符串

    这样做使得整个JSON字符串被圆括号所包围,从而被eval解释为一个表达式,最终可以成功解析成JavaScript对象。 使用eval的另一个问题是它可能会改变原有代码的作用域。通常,eval会根据其调用时的作用域来执行代码。...

    js解析json代码

    然后通过`eval()`函数将其转换为一个JavaScript对象数组`json1`。最后,通过`alert()`函数输出了数组中每个对象的`label`属性值。 需要注意的是,虽然`eval()`函数可以用来解析JSON字符串,但它并不被推荐作为解析...

    javascript 自定义eval函数实现

    接下来,我们讨论`eval()`的另一个常见用途——解析和执行JSON数据。由于JSON是JavaScript的一个子集,我们可以使用`eval()`快速地将JSON字符串转换为JavaScript对象,但这同样存在安全隐患。最佳实践是使用`JSON....

    js使用eval解析json实例与注意事项分享

    2. 在使用eval函数时,需要将JSON字符串用一对圆括号"()"包起来,这是因为在JavaScript中,如果紧跟在"{"后面的是一个标识符,那么它就不会被解释为对象的开始,而是变量名的开始。因此,在对JSON字符串使用eval之前...

    在Javascript中Eval函数的使用?

    但是,为了安全起见,更推荐使用`JSON.parse()`方法,它是专门为解析JSON设计的,不会引入`eval()`的安全风险: ```javascript let jsonString = '{"name": "John", "age": 30}'; let jsonObject = JSON.parse(json...

    eval函数的一些用法

    它的功能是将字符串作为代码执行,这在处理动态生成的代码或者解析JSON数据时尤为有用。本篇文章将深入探讨`eval()`函数的一些用法,并结合源码分析其工作原理和潜在的安全风险。 一、`eval()`函数的基本概念 `...

    为什么JS中eval处理JSON数据要加括号

    由于Ajax的兴起,JSON这种轻量级的数据格式作为...加上圆括号的目的是迫使eval函数在处理JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行。举一个例子,例如对

    js使用eval解析json(js中使用json)

    由于JSON规范要求数据用双引号包围,而JavaScript中对象的键默认需要用单引号或双引号,因此在使用`eval()`时,通常会在字符串前面和后面加上额外的括号,以确保解析为JavaScript对象而不是语句。 然而,这种方法...

    Ajax中使用JSON传输数据

    例如,`eval()`或`JSON.parse()`函数可以用来解析JSON字符串为JavaScript对象: ```javascript var responseText = '{"name":"张三","age":30,"city":"北京"}'; var data = JSON.parse(responseText); console.log...

    javascript解析json数据的3种方式

    ### JavaScript解析JSON数据的三种方式 在Web开发中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。在JavaScript中,...

    json------javascript eval()以及Example

    在处理JSON数据时,`eval()`曾被用来解析JSON字符串为JavaScript对象。例如,当你从服务器接收到一个JSON格式的字符串,你可以使用`eval()`将其转换为可操作的对象: ```javascript var jsonString = '{"name":...

Global site tag (gtag.js) - Google Analytics