为什么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 相关文章推荐
javascript preload&lazy load
May 13 Javascript
Jquery知识点三 jquery表单对象操作
Jan 17 Javascript
jQuery旋转插件—rotate支持(ie/Firefox/SafariOpera/Chrome)
Jan 16 Javascript
jQuery中unbind()方法用法实例
Jan 19 Javascript
jQuery实现的无限级下拉菜单功能示例
Sep 12 Javascript
基于javascript实现的购物商城商品倒计时实例
Dec 11 Javascript
zTree树形插件异步加载方法详解
Jun 14 Javascript
详解js的作用域、预解析机制
Feb 05 Javascript
JS实现的文件拖拽上传功能示例
May 21 Javascript
详解React中合并单元格的正确写法
Jan 08 Javascript
vue-父子组件和ref实例详解
Nov 10 Javascript
Vue全局使用less样式,组件使用全局样式文件中定义的变量操作
Oct 21 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/05/04 PHP
Linux fgetcsv取得的数组元素为空字符串的解决方法
2011/11/25 PHP
浅析php原型模式
2014/11/25 PHP
Zend Framework教程之请求对象的封装Zend_Controller_Request实例详解
2016/03/07 PHP
Yii2实现增删改查后留在当前页的方法详解
2017/01/13 PHP
PHP jpgraph库的配置及生成统计图表:折线图、柱状图、饼状图
2017/05/15 PHP
IE6下JS动态设置图片src地址问题
2010/01/08 Javascript
Javascript中的String对象详谈
2014/03/03 Javascript
jQuery判断当前点击的是第几个li的代码
2014/09/26 Javascript
JS实现新浪微博效果带遮罩层的弹出框代码
2015/10/12 Javascript
深入浅析javascript立即执行函数
2015/10/23 Javascript
VueJs与ReactJS和AngularJS的异同点
2016/12/12 Javascript
javascript中replace使用方法总结
2017/03/01 Javascript
AngularJS监听ng-repeat渲染完成的两种方法
2018/01/16 Javascript
Vue 2.5.2下axios + express 本地请求404的解决方法
2018/02/21 Javascript
解决vue.js this.$router.push无效的问题
2018/09/03 Javascript
原生JavaScript实现日历功能代码实例(无引用Jq)
2019/09/23 Javascript
Vue组件通信中非父子组件传值知识点总结
2019/12/05 Javascript
jQuery实现二级导航菜单的示例
2020/09/30 jQuery
[04:53]DOTA2英雄基础教程 祈求者
2014/01/03 DOTA
pymongo为mongodb数据库添加索引的方法
2015/05/11 Python
Python中列表和元组的使用方法和区别详解
2020/12/30 Python
python实现mysql的读写分离及负载均衡
2018/02/04 Python
python 用正则表达式筛选文本信息的实例
2018/06/05 Python
python Django 创建应用过程图示详解
2019/07/29 Python
Django对models里的objects的使用详解
2019/08/17 Python
Python3 Tkinkter + SQLite实现登录和注册界面
2019/11/19 Python
Mac 使用python3的matplot画图不显示的解决
2019/11/23 Python
python多维数组分位数的求取方式
2020/03/03 Python
Python验证码截取识别代码实例
2020/05/16 Python
css animation配合SVG制作能量流动效果
2021/03/24 HTML / CSS
大学新学期计划书
2014/04/28 职场文书
消防安全标语
2014/06/07 职场文书
导游词之无锡丝业博物馆
2019/11/12 职场文书
浅谈pytorch中stack和cat的及to_tensor的坑
2021/05/20 Python
解决Pytorch半精度浮点型网络训练的问题
2021/05/24 Python