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 相关文章推荐
判断目标是否是window,document,和拥有tagName的Element的代码
May 31 Javascript
JavaScript中数组对象的那些自带方法介绍
Mar 12 Javascript
javascript的渐进增强与平稳退化浅谈
Nov 12 Javascript
Bootstrap每天必学之弹出框(Popover)插件
Apr 25 Javascript
js实现3D图片环展示效果
Mar 09 Javascript
two.js之实现动画效果示例
Nov 06 Javascript
node.js中fs文件系统目录操作与文件信息操作
Feb 24 Javascript
JavaScript设计模式之观察者模式实例详解
Jan 16 Javascript
react写一个select组件的实现代码
Apr 03 Javascript
webpack HappyPack实战详解
Oct 08 Javascript
手写Vue2.0 数据劫持的示例
Mar 04 Vue.js
react中的DOM操作实现
Jun 30 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字符串函数的总结分析
2013/06/05 PHP
php 根据url自动生成缩略图并处理高并发问题
2014/01/23 PHP
检测codeigniter脚本消耗内存情况的方法
2015/03/21 PHP
php实现将上传word文件转为html的方法
2015/06/03 PHP
Zend Framework教程之分发器Zend_Controller_Dispatcher用法详解
2016/03/07 PHP
postfixadmin忘记密码后的修改密码方法详解
2016/07/20 PHP
PHP _construct()函数讲解
2019/02/03 PHP
javascript获取当前日期时间及其它操作函数
2011/01/11 Javascript
JS+CSS实现可拖拽的漂亮圆角特效弹出层完整实例
2015/02/13 Javascript
Jquery实现仿京东商城省市联动菜单
2015/11/19 Javascript
分享JS代码实现鼠标放在输入框上输入框和图片同时更换样式
2016/09/01 Javascript
在vue里使用codemirror遇到的问题
2018/11/01 Javascript
JavaScript ES2019中的8个新特性详解
2019/02/20 Javascript
浅析vue中的nextTick
2020/12/28 Vue.js
python实现的udp协议Server和Client代码实例
2014/06/04 Python
Django的URLconf中使用缺省视图参数的方法
2015/07/18 Python
Python的dict字典结构操作方法学习笔记
2016/05/07 Python
python出现&quot;IndentationError: unexpected indent&quot;错误解决办法
2017/10/15 Python
Django中使用第三方登录的示例代码
2018/08/20 Python
Python爬取商家联系电话以及各种数据的方法
2018/11/10 Python
python pands实现execl转csv 并修改csv指定列的方法
2018/12/12 Python
利用arcgis的python读取要素的X,Y方法
2018/12/22 Python
Python中的枚举类型示例介绍
2019/01/09 Python
Pandas中DataFrame的分组/分割/合并的实现
2019/07/16 Python
python requests使用socks5的例子
2019/07/25 Python
python Pandas如何对数据集随机抽样
2019/07/29 Python
python如何从键盘获取输入实例
2020/06/18 Python
Python自动巡检H3C交换机实现过程解析
2020/08/14 Python
介绍Java的内部类
2012/10/27 面试题
护士个人简历自荐信
2013/10/18 职场文书
产品质量保证书
2014/04/29 职场文书
公司停电通知
2015/04/15 职场文书
小学校园广播稿
2015/08/18 职场文书
2015年秋学期教研工作总结
2015/10/14 职场文书
原生JS实现飞机大战小游戏
2021/06/09 Javascript