JS中的eval 为什么加括号


Posted in Javascript onApril 13, 2016

eval简介

---eval在ECMA定义中是全局对象原型的方法;

---eval接受的参数是字符串格式的js代码, 将由执行引擎(记得'高级程序设计'还是哪说过, 此时新建一个执行引擎)执行这段字符串, 然后返回结果到eval调用的位置.

<!DOCTYPE html>
<html>
<head>
<title>eval学习</title>
<script type="text/javascript">
/*
eval("表达式");执行表达式语句
eval("("+javascript类型+")");转为javascript对象
*/
var jsonObj={"name":"ljl","data":123};//json,是javascript的对象
var jsonString='{"name":"ljl","data":123}';//javascript的string类型,字符串内容符合json格式的样式
var objType=eval("("+jsonString+")");//通过eval函数将json字符转为javascript对象
alert( typeof jsonString);//string
alert( typeof objType);//obj
alert(eval(123));//123
alert(typeof eval("("+123+")"));//number
var x=2;
var y=eval('x+1');//执行 2+1 表达式
alert('y= '+y);//3
</script>
</head> 
<body>
</body>
</html>

补充:总结

eval是js动态特性之一, 通过它直接执行js程序并返回结果, 常见的使用就是还原json数据为js对象;

但是由于其能在运行时动态改变上下文对象, 因此带来了注入攻击的风险;

使用时, 注意eval对字符串的语法认识是如何的, 常见的就是'大括号'问题

Javascript 相关文章推荐
javascript操作cookie_获取与修改代码
May 21 Javascript
js 页面刷新location.reload和location.replace的区别小结
Dec 24 Javascript
jquery ajax 同步异步的执行 return值不能取得的解决方案
Jan 08 Javascript
Jquery 切换不同图片示例代码
Dec 05 Javascript
深入分析JQuery和JavaScript的异同
Oct 23 Javascript
JS实现将Asp.Net的DateTime Json类型转换为标准时间的方法
Aug 02 Javascript
Bootstrap下拉菜单Dropdowns的实现代码
Mar 17 Javascript
Angular2中如何使用ngx-translate进行国际化
May 21 Javascript
关于react中组件通信的几种方式详解
Dec 10 Javascript
vue初始化动画加载的实例
Sep 01 Javascript
jQuery实现的别踩白块小游戏完整示例
Jan 07 jQuery
微信小程序实现单列下拉菜单效果
Apr 25 Javascript
jQuery操作属性和样式详解
Apr 13 #Javascript
jquery跟随屏幕滚动效果的实现代码
Apr 13 #Javascript
两种方法解决javascript url post 特殊字符转义 + &amp; #
Apr 13 #Javascript
Angular.js与Bootstrap相结合实现手风琴菜单代码
Apr 13 #Javascript
JQuery 两种方法解决刚创建的元素遍历不到的问题
Apr 13 #Javascript
更高效的使用JQuery 这里总结了8个小技巧
Apr 13 #Javascript
深入理解关于javascript中apply()和call()方法的区别
Apr 12 #Javascript
You might like
9个实用的PHP代码片段分享
2015/01/22 PHP
在laravel框架中实现封装公共方法全局调用
2019/10/14 PHP
Ctrl+Enter提交内容信息
2006/06/26 Javascript
JavaScript中的私有/静态属性介绍
2012/07/26 Javascript
JavaScript高级程序设计(第3版)学习笔记13 ECMAScript5新特性
2012/10/11 Javascript
javascript连续赋值问题
2015/07/08 Javascript
JS控制HTML元素的显示和隐藏的两种方法
2016/09/27 Javascript
Vue shopCart 组件开发详解
2018/01/26 Javascript
bootstrap中selectpicker下拉框使用方法实例
2018/03/22 Javascript
vue中的适配px2rem示例代码
2018/11/19 Javascript
jQuery简单实现根据日期计算星期几的方法
2019/01/09 jQuery
微信小程序登录session的使用
2019/03/17 Javascript
微信小程序录音实现功能并上传(使用node解析接收)
2020/02/26 Javascript
Vue项目打包部署到apache服务器的方法步骤
2021/02/01 Vue.js
[45:18]2018DOTA2亚洲邀请赛 4.3 突围赛 Optic vs iG 第一场
2018/04/04 DOTA
[01:18]PWL开团时刻DAY10——一拳超人
2020/11/11 DOTA
Python图像灰度变换及图像数组操作
2016/01/27 Python
Django压缩静态文件的实现方法详析
2018/08/26 Python
对于Python深浅拷贝的理解
2019/07/29 Python
TFRecord文件查看包含的所有Features代码
2020/02/17 Python
matplotlib运行时配置(Runtime Configuration,rc)参数rcParams解析
2021/01/05 Python
加拿大最大的箱包及旅游配件零售商:Bentley Leathers
2017/07/19 全球购物
一些Solaris面试题
2013/03/22 面试题
留学推荐信写作指南
2014/01/25 职场文书
党校培训自我鉴定
2014/02/01 职场文书
优良学风班总结材料
2014/02/08 职场文书
集体备课反思
2014/02/12 职场文书
小学老师寄语大全
2014/04/04 职场文书
应届大专毕业生自我鉴定
2014/04/08 职场文书
外贸会计专业自荐信
2014/06/22 职场文书
三严三实对照检查材料
2014/09/22 职场文书
保卫工作个人总结
2015/03/03 职场文书
小学生节水倡议书
2015/04/29 职场文书
小兵张嘎电影观后感
2015/06/03 职场文书
应收账款管理制度
2015/08/06 职场文书
详解SQL的窗口函数
2022/04/21 Oracle