为什么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高级笔记
Jul 13 Javascript
extjs关于treePanel+chekBox全部选中以及清空选中问题探讨
Apr 02 Javascript
javascript删除数组元素并且数组长度减小的简单实例
Feb 14 Javascript
原生js事件的添加和删除的封装
Jul 01 Javascript
asp知识整理笔记3(问答模式)
Sep 27 Javascript
基于JavaScript实现单选框下拉菜单添加文件效果
Jun 26 Javascript
Jquery Easyui选项卡组件Tab使用详解(10)
Dec 18 Javascript
js+html制作简单日历的方法
Jun 27 Javascript
react native仿微信PopupWindow效果的实例代码
Aug 07 Javascript
PHP 实现一种多文件上传的方法
Sep 20 Javascript
vue+elementUi图片上传组件使用详解
Aug 20 Javascript
es6函数之严格模式用法实例分析
Mar 17 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
5.PHP的其他功能
2006/10/09 PHP
php set_time_limit()函数的使用详解
2013/06/05 PHP
php数组随机排序实现方法
2015/06/13 PHP
键盘 keycode的值 javascript时触发事件时很有用的要素
2009/11/02 Javascript
YUI的Tab切换实现代码
2010/04/11 Javascript
jQuery Validation插件remote验证方式的Bug解决
2010/07/01 Javascript
JavaScript 大数据相加的问题
2011/08/03 Javascript
js页面滚动时层智能浮动定位实现(jQuery/MooTools)
2011/08/23 Javascript
jQuery中:reset选择器用法实例
2015/01/04 Javascript
js的for in循环和java里foreach循环的区别分析
2015/01/28 Javascript
javascript鼠标右键菜单自定义效果
2020/12/08 Javascript
学习使用bootstrap基本控件(table、form、button)
2016/04/12 Javascript
浅谈javascript控制HTML5的全屏操控,浏览器兼容的问题
2016/10/10 Javascript
Vue.js第一天学习笔记(数据的双向绑定、常用指令)
2016/12/01 Javascript
Vue.js手风琴菜单组件开发实例
2017/05/16 Javascript
Vue中的ref作用详解(实现DOM的联动操作)
2017/08/21 Javascript
layui中layer前端组件实现图片显示功能的方法分析
2017/10/13 Javascript
浅谈angular4.0中路由传递参数、获取参数最nice的写法
2018/03/12 Javascript
微信小程序版本自动更新的方法
2019/06/14 Javascript
VUE路由动态加载实例代码讲解
2019/08/26 Javascript
vue组件内部引入外部js文件的方法
2020/01/18 Javascript
Element图表初始大小及窗口自适应实现
2020/07/10 Javascript
JavaScript中常用的3种弹出提示框(alert、confirm、prompt)
2020/11/10 Javascript
SublimeText 2编译python出错的解决方法(The system cannot find the file specified)
2013/11/27 Python
Python3实现抓取javascript动态生成的html网页功能示例
2017/08/22 Python
Pandas库之DataFrame使用的学习笔记
2019/06/21 Python
Python之Numpy的超实用基础详细教程
2019/10/23 Python
Pytorch在NLP中的简单应用详解
2020/01/08 Python
Python实现一个优先级队列的方法
2020/07/31 Python
pandas按条件筛选数据的实现
2021/02/20 Python
css3中新增的样式使用示例附效果图
2014/08/19 HTML / CSS
3种方式实现瀑布流布局小结
2019/09/05 HTML / CSS
华为智利官方商店:Huawei Chile
2020/05/09 全球购物
总经理检讨书
2014/09/15 职场文书
工会文体活动总结
2015/05/07 职场文书
户外拓展训练感想
2015/08/07 职场文书