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


Posted in Javascript onApril 13, 2015

由于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]

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

Javascript 相关文章推荐
基于jquery实现的上传图片及图片大小验证、图片预览效果代码
Apr 12 Javascript
jquery中加载图片自适应大小主要实现代码
Aug 23 Javascript
点击按钮自动加关注的代码(sina微博/QQ空间/人人网/腾讯微博)
Jan 02 Javascript
jquery的ajax和getJson跨域获取json数据的实现方法
Feb 04 Javascript
javascript感应鼠标图片透明度显示的方法
Feb 24 Javascript
javascript为按钮注册回车事件(设置默认按钮)的方法
May 09 Javascript
Javascript删除指定元素节点的方法
Jun 21 Javascript
jquery利用json实现页面之间传值的实例解析
Dec 12 Javascript
ES6中Proxy与Reflect实现重载(overload)的方法
Mar 30 Javascript
vue学习笔记之vue1.0和vue2.0的区别介绍
May 17 Javascript
在LayUI图片上传中,解决由跨域问题引起的请求接口错误的方法
Sep 24 Javascript
微信域名检测接口调用演示步骤(含PHP、Python)
Dec 08 Javascript
使用window.prompt()实现弹出用户输入的对话框
Apr 13 #Javascript
jsMind通过鼠标拖拽的方式调整节点位置
Apr 13 #Javascript
javascript继承的六大模式小结
Apr 13 #Javascript
javascript制作的简单注册模块表单验证
Apr 13 #Javascript
简化版手机端照片预览组件
Apr 13 #Javascript
javascript引用类型指针的工作方式
Apr 13 #Javascript
javascript实现图片自动和可控的轮播切换特效
Apr 13 #Javascript
You might like
php 求质素(素数) 的实现代码
2011/04/12 PHP
php代码架构的八点注意事项
2016/01/25 PHP
PHP Class SoapClient not found解决方法
2018/01/20 PHP
PHP实现二维数组(或多维数组)转换成一维数组的常见方法总结
2019/12/04 PHP
LazyForm jQuery plugin 定制您的CheckBox Radio和Select
2009/10/24 Javascript
用js来刷新当前页面保留参数的具体实现
2013/12/23 Javascript
jquery fancybox ie6不显示关闭按钮的解决办法
2013/12/25 Javascript
jquery移除、绑定、触发元素事件使用示例详解
2014/04/10 Javascript
JS非Alert实现网页右下角“未读信息”效果弹窗
2015/09/26 Javascript
javascript跑马灯抽奖实例讲解
2020/04/17 Javascript
jQuery实用小技巧_输入框文字获取和失去焦点的简单实例
2016/08/25 Javascript
深入浅析JS是按值传递还是按引用传递(推荐)
2016/09/18 Javascript
Node.js的文件权限及读写flag详解
2016/10/11 Javascript
详谈js遍历集合(Array,Map,Set)
2017/04/06 Javascript
JS+HTML实现的圆形可点击区域示例【3种方法】
2018/08/01 Javascript
微信小程序学习笔记之文件上传、下载操作图文详解
2019/03/29 Javascript
vue-router 前端路由之路由传值的方式详解
2019/04/30 Javascript
layui实现下拉框三级联动
2019/07/26 Javascript
javascript 代码是如何被压缩的示例代码
2020/05/06 Javascript
JS删除数组指定值常用方法详解
2020/06/04 Javascript
Python构建XML树结构的方法示例
2017/06/30 Python
Python代码块批量添加Tab缩进的方法
2018/06/25 Python
Python简单过滤字母和数字的方法小结
2019/01/09 Python
Python编写合并字典并实现敏感目录的小脚本
2019/02/26 Python
详解Numpy中的数组拼接、合并操作(concatenate, append, stack, hstack, vstack, r_, c_等)
2019/05/27 Python
美国在线咖啡、茶和餐厅供应商:LollicupStore
2018/05/04 全球购物
static函数与普通函数有什么区别
2015/12/25 面试题
名词解释型面试题(主要是网络)
2013/12/27 面试题
用Python写一个for循环的例子
2016/07/19 面试题
自立自强的名人事例
2014/02/10 职场文书
班级课外活动总结
2014/07/09 职场文书
2019财务转正述职报告
2019/06/27 职场文书
导游词之西安大清真寺
2019/12/17 职场文书
Django操作cookie的实现
2021/05/26 Python
Spring Boot实战解决高并发数据入库之 Redis 缓存+MySQL 批量入库问题
2022/02/12 Redis
Python+Tkinter制作专属图形化界面
2022/04/01 Python