当前位置: 首页 > 编程笔记 >

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

蔚元明
2023-03-14
本文向大家介绍为什么JS中eval处理JSON数据要加括号,包括了为什么JS中eval处理JSON数据要加括号的使用技巧和注意事项,需要的朋友参考一下

由于Ajax的兴起,JSON这种轻量级的数据格式作为客户端与服务器之间的传输格式逐渐地流行起来,进而出现的问题是如何将服务器端构建好的JSON数据转化为可用的JavaScript对象。利用eval函数无疑是一种简单而直接的方法。在转化的时候需要将JSON字符串的外面包装一层圆括号:


var jsonObject = eval("(" + jsonFormat + ")");


为什么要加括号?

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


alert(eval("{}");  // return undefined

alert(eval("({})");// return object[Object]


以上所述就是本文的全部内容了,希望大家能够喜欢。

 类似资料:
  • 本文向大家介绍为什么eval要添加括号呢?相关面试题,主要包含被问及为什么eval要添加括号呢?时的应答技巧和注意事项,需要的朋友参考一下 没太理解题意,方法的调用是要加括号的啊…… 如果题目问的是为什么会有 这种调用形式的话,那是因为js规定在间接调用(无调用者上下文)时,其编译的代码会默认执行在顶层作用域。 例: 所以永远只会返回全局对象(该表达式可以作为的polyfill,并且无法被污染)

  • 问题内容: 我已经知道(困难的方式)需要在JSON数据周围添加括号,如下所示: (至少在Firefox 3中)。 这是什么原因呢?我讨厌写代码而又不了解幕后花絮。 问题答案: 放在括号内实际上等效于 如果要在没有括号的情况下进行评估,则将对代码进行评估,并且如果其中确实有任何命名函数,则将对其进行定义,但不会返回。 举例来说,可以像创建函数一样调用函数: 将调用刚刚定义的函数。但是,以下内容不起作

  • eval 函数会在当前作用域中执行一段 JavaScript 代码字符串。 var foo = 1; function test() { var foo = 2; eval('foo = 3'); return foo; } test(); // 3 foo; // 1 但是 eval 只在被直接调用并且调用函数就是 eval 本身时,才在当前作用域中执行。 var fo

  • 问题内容: 据我所知,由于安全性,在JavaScript中使用JSON对象被认为是不好的做法。如果JSON来自其他服务器,我可以理解此问题。 但是,如果JSON是由我自己的服务器提供的,并且是使用PHP创建的(我们假设它不是越野车),那么简单地使用JS中的JSON读取是否合法,或者我目前无法想到任何安全问题? ? 我真的不想处理动态加载JSON解析器的问题,因此很高兴使用。 PS:很明显,我将使用

  • 本文向大家介绍浅谈JS中json数据的处理,包括了浅谈JS中json数据的处理的使用技巧和注意事项,需要的朋友参考一下 1、 json数据结构(对象和数组) json对象:var obj = {"name":"xiao","age":12}; json数组:var objArray = [{"name":"xiao","age":12},{"name":"xiao","age":12}]; 2、

  • 本文向大家介绍python 为什么说eval要慎用,包括了python 为什么说eval要慎用的使用技巧和注意事项,需要的朋友参考一下 eval前言 当内存中的内置模块含有os的话,eval同样可以做到命令执行: 当然,eval只能执行Python的表达式类型的代码,不能直接用它进行import操作,但exec可以。如果非要使用eval进行import,则使用__import__: 在实际的代码中

  • 问题内容: 我已经在多个地方多次看到过这种情况,但是从未找到令人满意的解释来说明为什么会这样。 因此,希望这里会介绍一个。为什么我们(至少通常)不使用和? 编辑:我看到人们以为这个问题与Web服务器有关,但事实并非如此。我可以理解为什么传递给未经处理的字符串可能很糟糕。在非Web应用程序中不好吗? 问题答案: 通常有更清晰,更直接的方法来获得相同的效果。如果构建复杂的字符串并将其传递给,则代码将难

  • 问题内容: 您能否告诉我这种特定语法结构的原因 解析json文本时。克罗克福德说:“ 文本必须用括号括起来,以避免绊倒JavaScript语法 。” 在这里。那是什么意思? 我们可以避免吗? 问题答案: Crockford所指的语法含糊之处在于,如果在 表达式 上下文中未找到一个开放的花括号,则该花括号将被识别为一个块,而不是一个对象文字的开头。 例如: 会给您一个语法错误,因为它将被解释为一个块