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中数组sort和reverse用法分析
Dec 30 Javascript
jQuery实现单击弹出Div层窗口效果(可关闭可拖动)
Sep 19 Javascript
JavaScript组件开发完整示例
Dec 15 Javascript
浅析javascript函数表达式
Feb 10 Javascript
vue组件之Alert的实现代码
Oct 17 Javascript
jQuery图片查看插件Magnify开发详解
Dec 25 jQuery
Node.js Buffer用法解读
May 18 Javascript
vue中过滤器filter的讲解
Jan 21 Javascript
在JavaScript中使用严格模式(Strict Mode)
Jun 13 Javascript
Vue使用NProgress的操作过程解析
Oct 10 Javascript
微信小程序自定义组件components(代码详解)
Oct 21 Javascript
vue开发移动端底部导航条功能
Apr 08 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
PHP防CC攻击实现代码
2011/12/29 PHP
php中如何使对象可以像数组一样进行foreach循环
2013/08/09 PHP
php解析json数据实例
2014/08/19 PHP
PHP使用curl模拟post上传及接收文件的方法
2016/03/04 PHP
PHP框架laravel的.env文件配置教程
2017/06/07 PHP
JS高级拖动技术 setCapture,releaseCapture
2011/07/31 Javascript
document.createElement()用法
2013/03/13 Javascript
js实现的折叠导航示例
2013/11/29 Javascript
解析prototype,JQuery中跳出each循环的方法
2013/12/12 Javascript
纯JavaScript基于notie.js插件实现消息提示特效
2016/01/18 Javascript
jQuery实现的导航下拉菜单效果
2016/07/04 Javascript
jQuery源码分析之init的详细介绍
2017/02/13 Javascript
JavaScript 有用的代码片段和 trick
2018/02/22 Javascript
jQuery实现鼠标滑过商品小图片上显示对应大图片功能【测试可用】
2018/04/27 jQuery
vue中如何让子组件修改父组件数据
2018/06/14 Javascript
解决vue路由后界面没有变化,但是链接有的问题
2018/09/01 Javascript
微信小程序实现日历功能
2018/11/27 Javascript
jQuery实现的3D版图片轮播示例【滑动轮播】
2019/01/18 jQuery
深入解析Vue源码实例挂载与编译流程实现思路详解
2019/05/05 Javascript
es6数组includes()用法实例分析
2020/04/18 Javascript
[09:13]DOTA2-DPC中国联赛 正赛 Ehome vs Magma 选手采访 1月19日
2021/03/11 DOTA
实例说明Python中比较运算符的使用
2015/05/13 Python
Django后台admin的使用详解
2019/07/08 Python
Python使用mongodb保存爬取豆瓣电影的数据过程解析
2019/08/14 Python
基于python解线性矩阵方程(numpy中的matrix类)
2019/10/21 Python
俄罗斯领先的移动和数字设备在线商店:Svyaznoy.ru
2020/12/21 全球购物
int *p=NULL和*p= NULL有什么区别
2014/10/23 面试题
综合办公室主任岗位职责
2014/04/13 职场文书
歌颂祖国演讲稿
2014/05/04 职场文书
党员教师群众路线对照检查材料思想汇报
2014/09/29 职场文书
一百条裙子读书笔记
2015/07/01 职场文书
新郎父母婚礼答谢词
2015/09/29 职场文书
幼儿园家长心得体会
2016/01/21 职场文书
go使用Gin框架利用阿里云实现短信验证码功能
2021/08/04 Golang
教你快速构建一个基于nginx的web集群项目
2021/11/27 Servers
Django + Taro 前后端分离项目实现企业微信登录功能
2022/04/07 Python