为什么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,jquery滚动/跳转页面到指定位置的实现思路
Jun 03 Javascript
JavaScript中的变量作用域介绍
Dec 31 Javascript
详解JavaScript的回调函数
Nov 20 Javascript
AngularJs 弹出模态框(model)
Apr 07 Javascript
你可能不知道的JSON.stringify()详解
Aug 17 Javascript
详解Vue中一种简易路由传参办法
Sep 15 Javascript
微信小程序当前时间时段选择器插件使用方法详解
Dec 28 Javascript
详解vue开发中调用微信jssdk的问题
Apr 16 Javascript
解决前后端分离 vue+springboot 跨域 session+cookie失效问题
May 13 Javascript
vue项目,代码提交至码云,iconfont的用法说明
Jul 30 Javascript
js 将多个对象合并成一个对象 assign方法的实现
Sep 24 Javascript
如何管理Vue中的缓存页面
Feb 06 Vue.js
使用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中长文章分页显示实现代码
2012/09/29 PHP
win7计划任务定时执行PHP脚本设置图解
2014/05/09 PHP
php写入数据到CSV文件的方法
2015/03/14 PHP
PHP实现关键字搜索后描红功能示例
2019/07/03 PHP
Javascript SHA-1:Secure Hash Algorithm
2006/12/20 Javascript
JS 中document.URL 和 windows.location.href 的区别
2009/11/11 Javascript
非常强大的 jQuery.AsyncBox 弹出对话框插件
2011/08/29 Javascript
toggle()隐藏问题的解决方法
2014/02/17 Javascript
Javascript中的异步编程规范Promises/A详细介绍
2014/06/06 Javascript
javascript弹出页面回传值的方法
2015/01/28 Javascript
javascript字符串替换函数如何一次性全部替换掉
2015/10/30 Javascript
Bootstrap教程JS插件滚动监听学习笔记分享
2016/05/18 Javascript
Vue.js表单控件实践
2016/10/27 Javascript
纯js实现倒计时功能
2017/01/06 Javascript
微信小程序 摇一摇抽奖简单实例实现代码
2017/01/09 Javascript
原生JS中slice()方法和splice()区别
2017/03/06 Javascript
AngularJS 实现点击按钮获取验证码功能实例代码
2017/07/13 Javascript
基于构造函数的五种继承方法小结
2017/07/27 Javascript
微信自定义分享链接信息(标题,图片和内容)实现过程详解
2019/09/04 Javascript
微信小程序中限制激励式视频广告位显示次数(实现思路)
2019/12/06 Javascript
vue框架中props的typescript用法详解
2020/02/17 Javascript
解决vue单页面多个组件嵌套监听浏览器窗口变化问题
2020/07/30 Javascript
[09:37]2018DOTA2国际邀请赛寻真——不懈追梦的Team Serenity
2018/08/13 DOTA
[01:04:02]DOTA2-DPC中国联赛 正赛 Elephant vs IG BO3 第二场 1月24日
2021/03/11 DOTA
python Spyder界面无法打开的解决方法
2018/04/27 Python
Django objects的查询结果转化为json的三种方式的方法
2018/11/07 Python
python 运用Django 开发后台接口的实例
2018/12/11 Python
使用python实现男神女神颜值打分系统(推荐)
2019/10/31 Python
Python3.7安装pyaudio教程解析
2020/07/24 Python
pycharm + django跨域无提示的解决方法
2020/12/06 Python
css和css3弹性盒模型实现元素宽度(高度)自适应
2019/05/15 HTML / CSS
德国净水壶和滤芯品牌:波尔德PearlCo(家用净水器)
2020/04/29 全球购物
大学运动会入场词
2014/02/22 职场文书
报纸媒体创意广告词
2014/03/17 职场文书
2014年纪检部工作总结
2014/11/12 职场文书
儿子满月酒致辞
2015/07/29 职场文书