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添加String.Format方法
Aug 11 Javascript
innerHTML 和 getElementsByName 在IE下面的bug 的解决
Apr 09 Javascript
jQuery操作 input type=checkbox的实现代码
Jun 14 Javascript
基于Jquery实现的一个图片滚动切换
Jun 21 Javascript
多个js与css文件的合并方法详细说明
Dec 26 Javascript
js获取url参数值的两种方式
Sep 10 Javascript
基于javascript实现判断移动终端浏览器版本信息
Dec 09 Javascript
JS中把函数作为另一函数的参数传递方法(总结)
Jun 28 Javascript
OkHttp踩坑随笔为何 response.body().string() 只能调用一次
Jan 08 Javascript
通过实例学习React中事件节流防抖
Jun 17 Javascript
小程序表单认证布局及验证详解
Jun 19 Javascript
Vue自定义组件双向绑定实现原理及方法详解
Sep 03 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
mysql 中InnoDB和MyISAM的区别分析小结
2008/04/15 PHP
php常用正则函数实例小结
2016/12/29 PHP
浅说js变量
2011/05/25 Javascript
jquery插件制作 手风琴Panel效果实现
2012/08/17 Javascript
使用jquery实现div的tab切换实例代码
2013/05/27 Javascript
js history对象简单实现返回和前进
2013/10/30 Javascript
jquery模拟LCD 时钟的html文件源代码
2014/06/16 Javascript
Jquery的基本对象转换和文档加载用法实例
2015/02/25 Javascript
jQuery实时显示鼠标指针位置和键盘ASCII码
2016/03/28 Javascript
js流动式效果显示当前系统时间
2016/05/16 Javascript
浅谈js中字符和数组一些基本算法题
2016/08/15 Javascript
Bootstrap基本组件学习笔记之导航(10)
2016/12/07 Javascript
深入理解Webpack 中路径的配置
2017/06/17 Javascript
解决vue中虚拟dom,无法实时更新的问题
2018/09/15 Javascript
angularJs使用ng-repeat遍历后选中某一个的方法
2018/09/30 Javascript
JS实现的图片选择顺序切换和循环切换功能示例【测试可用】
2018/12/28 Javascript
使用vue-cli3新建一个项目并写好基本配置(推荐)
2019/04/24 Javascript
运用js实现图层拖拽的功能
2019/05/24 Javascript
Python的爬虫框架scrapy用21行代码写一个爬虫
2017/04/24 Python
关于python的list相关知识(推荐)
2017/08/30 Python
详解Python中的Numpy、SciPy、MatPlotLib安装与配置
2017/11/17 Python
在Python中os.fork()产生子进程的例子
2019/08/08 Python
利用pyshp包给shapefile文件添加字段的实例
2019/12/06 Python
基于python3实现倒叙字符串
2020/02/18 Python
Pycharm和Idea支持的vim插件的方法
2020/02/21 Python
Python3爬虫中关于Ajax分析方法的总结
2020/07/10 Python
Python configparser模块应用过程解析
2020/08/14 Python
详解HTML5 data-* 自定义属性
2018/01/24 HTML / CSS
美国轮胎网站:Priority Tire
2018/11/28 全球购物
施工资料员的岗位职责
2013/12/22 职场文书
保健品市场营销方案
2014/03/31 职场文书
收款委托书范本
2014/09/11 职场文书
银行优秀员工推荐信
2015/03/24 职场文书
关于召开会议的通知
2015/04/15 职场文书
Python图片检索之以图搜图
2021/05/31 Python
项目中Nginx多级代理是如何获取客户端的真实IP地址
2022/05/30 Servers