为什么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 相关文章推荐
[原创]提供复制本站内容时出现,该文章转自脚本之家等字样的js代码
Mar 27 Javascript
jQuery EasyUI API 中文文档 - Tree树使用介绍
Nov 19 Javascript
JavaScript splice()方法详解
Sep 22 Javascript
jQuery避免$符和其他JS库冲突的方法对比
Feb 20 Javascript
JavaScript对象创建模式实例汇总
Oct 03 Javascript
js入门之Function函数的使用方法【新手必看】
Nov 22 Javascript
详谈jQuery Ajax(load,post,get,ajax)的用法
Mar 02 Javascript
细说webpack源码之compile流程-rules参数处理技巧(2)
Dec 26 Javascript
使用Angular CLI进行单元测试和E2E测试的方法
Mar 24 Javascript
JavaScript常用事件介绍
Jan 21 Javascript
javascript实现5秒倒计时并跳转功能
Jun 20 Javascript
js实现图片粘贴到网页
Dec 06 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/07/20 PHP
详解php用curl调用接口方法,get和post两种方式
2017/01/13 PHP
php中文乱码问题的终极解决方案汇总
2017/08/01 PHP
JS 控制小数位数的实现代码
2011/08/02 Javascript
jquery实现滑动图片自己测试的例子
2013/11/05 Javascript
jQuery Form 页面表单提交的小例子
2013/11/15 Javascript
使用JavaScript实现网页版Pongo设计思路及源代码分享
2014/06/16 Javascript
在JavaScript中判断整型的N种方法示例介绍
2014/06/18 Javascript
jQuery内部原理和实现方式浅析
2015/02/03 Javascript
bootstrap中模态框、模态框的属性实例详解
2017/02/17 Javascript
jQuery中绑定事件bind() on() live() one()的异同
2017/02/23 Javascript
浅析bootstrap原理及优缺点
2017/03/19 Javascript
Webpack之tree-starking 解析
2018/09/11 Javascript
jquery获取img的src值实例介绍
2019/01/16 jQuery
vue实现todolist基本功能以及数据存储功能实例详解
2019/04/11 Javascript
在Vue项目中使用snapshot测试的具体使用
2019/04/16 Javascript
微信小程序 轮播图实现原理及优化详解
2019/09/29 Javascript
vue实现导航标题栏随页面滚动渐隐渐显效果
2020/03/12 Javascript
jQuery实现html可联动的百分比进度条
2020/03/26 jQuery
vue搜索页开发实例代码详解(热门搜索,历史搜索,淘宝接口演示)
2020/04/11 Javascript
小程序表单认证布局及验证详解
2020/06/19 Javascript
[06:33]3.19 DOTA2发布会 海涛、冷冷、2009见证希望
2014/03/21 DOTA
[33:09]完美世界DOTA2联赛循环赛 Forest vs DM BO2第二场 10.29
2020/10/29 DOTA
Python 用户登录验证的小例子
2013/03/06 Python
使用python绘制常用的图表
2016/08/27 Python
tensorflow建立一个简单的神经网络的方法
2018/02/10 Python
python for 循环获取index索引的方法
2019/02/01 Python
详解PyCharm+QTDesigner+PyUIC使用教程
2019/06/13 Python
Python创建或生成列表的操作方法
2019/06/19 Python
python异常处理、自定义异常、断言原理与用法分析
2020/03/23 Python
惠普香港官方商店:HP香港
2019/04/30 全球购物
大学生志愿者感言
2014/01/15 职场文书
股权投资意向书
2014/04/01 职场文书
党的群众路线查摆剖析材料
2014/10/10 职场文书
食堂卫生管理制度
2015/08/04 职场文书
四则混合运算教学反思
2016/02/23 职场文书