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 表格排序
Oct 31 Javascript
Jquery Validation插件防止重复提交表单的解决方法
Mar 05 Javascript
基于jQuery的js分页代码
Jun 10 Javascript
基于JavaScript实现轮播图代码
Jul 14 Javascript
JS实现双击内容变为可编辑状态
Mar 03 Javascript
详解Vuex管理登录状态
Nov 13 Javascript
使用FileReader API创建Vue文件阅读器组件
Apr 03 Javascript
如何更好的编写js async函数
May 13 Javascript
浅谈Node.js 中间件模式
Jun 12 Javascript
JavaScript碎片—函数闭包(模拟面向对象)
Mar 13 Javascript
Vue项目如何引入bootstrap、elementUI、echarts
Nov 26 Vue.js
使用vue-element-admin框架从后端动态获取菜单功能的实现
Apr 29 Vue.js
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获取远程图片的两种 CURL方式和sockets方式获取远程图片
2011/11/07 PHP
PHP Header用于页面跳转时的几个注意事项
2016/10/21 PHP
phpfpm的作用和用法
2019/10/10 PHP
Aster vs KG BO3 第三场2.18
2021/03/10 DOTA
javascript各种复制代码收集
2008/09/20 Javascript
javascript插入样式实现代码
2012/02/22 Javascript
JavaScript中的变量声明早于赋值分析
2012/03/01 Javascript
jquery使用淘宝接口跨域查询手机号码归属地实例
2013/11/28 Javascript
JavaScript实现的图像模糊算法代码分享
2014/04/22 Javascript
Javascript中使用A标签获取当前目录的绝对路径方法
2015/03/02 Javascript
JQuery选中checkbox方法代码实例(全选、反选、全不选)
2015/04/27 Javascript
jQuery插件实现图片轮播特效
2016/06/16 Javascript
javascript宿主对象之window.navigator详解
2016/09/07 Javascript
微信小程序 实战程序简易新闻的制作
2017/01/09 Javascript
JavaScript使用正则表达式获取全部分组内容的方法示例
2017/01/17 Javascript
JS实现把一个页面层数据传递到另一个页面的两种方式
2018/08/13 Javascript
微信小程序实现上传word、txt、Excel、PPT等文件功能
2019/05/23 Javascript
[51:29]Alliance vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
netbeans7安装python插件的方法图解
2013/12/24 Python
python中字典dict常用操作方法实例总结
2015/04/04 Python
python中pandas.DataFrame的简单操作方法(创建、索引、增添与删除)
2017/03/12 Python
浅谈对yield的初步理解
2017/05/29 Python
利用Python循环(包括while&amp;for)各种打印九九乘法表的实例
2017/11/06 Python
python 接口测试response返回数据对比的方法
2018/02/11 Python
对Python3+gdal 读取tiff格式数据的实例讲解
2018/12/04 Python
python+openCV调用摄像头拍摄和处理图片的实现
2019/08/06 Python
Python读写文件模式和文件对象方法实例详解
2019/09/17 Python
学习python需要有编程基础吗
2020/06/02 Python
opencv 图像轮廓的实现示例
2020/07/08 Python
Python gevent协程切换实现详解
2020/09/14 Python
记录一下scrapy中settings的一些配置小结
2020/09/28 Python
美国葡萄酒网上商店:Martha Stewart Wine Co.
2019/03/17 全球购物
出纳年终工作总结2014
2014/12/05 职场文书
鲁迅故里导游词
2015/02/05 职场文书
2015年纪检监察工作总结
2015/04/08 职场文书
小型婚礼主持词
2015/06/30 职场文书