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 Select标记中options操作方法集合
Oct 22 Javascript
jquery插件推荐 jquery.cookie
Nov 09 Javascript
jquery.uploadify插件在chrome浏览器频繁崩溃解决方法
Mar 01 Javascript
jQuery 获取多选框的值及多选框中文的函数
May 16 Javascript
JavaScript制作弹出层效果
Dec 02 Javascript
Angularjs单选改为多选的开发过程及问题解析
Feb 17 Javascript
详解Webpack-dev-server的proxy用法
Sep 08 Javascript
jQuery使用each遍历循环的方法
Sep 19 jQuery
Vue 第三方字体图标引入 Font Awesome的方法
Sep 28 Javascript
微信小程序mpvue点击按钮获取button值的方法
May 29 Javascript
Vue使用Three.js加载glTF模型的方法详解
Jun 14 Javascript
Element Collapse 折叠面板的使用方法
Jul 26 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获取网站域名和地址的代码
2008/08/17 PHP
PHP进阶学习之Geo的地图定位算法详解
2019/06/19 PHP
我的Node.js学习之路(三)--node.js作用、回调、同步和异步代码 以及事件循环
2014/07/06 Javascript
js自动生成的元素与页面原有元素发生堆叠的解决方法
2014/09/04 Javascript
jQuery带箭头提示框tooltips插件集锦
2014/11/17 Javascript
基于JQuery制作可编辑的表格特效
2014/12/23 Javascript
JavaScript高级程序设计(第三版)学习笔记1~5章
2016/03/11 Javascript
JS请求servlet功能示例
2017/06/01 Javascript
jQuery实现广告条滚动效果
2017/08/22 jQuery
js实现加载页面就自动触发超链接的示例
2017/08/31 Javascript
Node.js实现mysql连接池使用事务自动回收连接的方法示例
2018/02/03 Javascript
vuex 的简单使用
2018/03/22 Javascript
详解vuex的简单todolist例子
2019/07/14 Javascript
python三元运算符实现方法
2013/12/17 Python
python实现获取序列中最小的几个元素
2014/09/25 Python
python生成式的send()方法(详解)
2017/05/08 Python
Django 如何获取前端发送的头文件详解(推荐)
2017/08/15 Python
python leetcode 字符串相乘实例详解
2018/09/03 Python
Python 3.x基于Xml数据的Http请求方法
2018/12/28 Python
在Django model中设置多个字段联合唯一约束的实例
2019/07/17 Python
你可能不知道的Python 技巧小结
2020/01/29 Python
PyQt5中向单元格添加控件的方法示例
2020/03/24 Python
基于python爬取有道翻译过程图解
2020/03/31 Python
Html5跳转到APP指定页面的实现
2020/01/14 HTML / CSS
Java中的基本数据类型所占存储空间大小固定的吗
2012/02/15 面试题
三方合作协议书范本
2014/04/18 职场文书
乐观自信演讲稿范文
2014/05/21 职场文书
经营目标管理责任书
2014/07/25 职场文书
人事专员岗位说明书
2014/07/29 职场文书
国际政治学专业推荐信
2014/09/26 职场文书
2015仓库保管员年终工作总结
2015/05/13 职场文书
mysql备份策略的实现(全量备份+增量备份)
2021/07/07 MySQL
MyBatis-Plus 批量插入数据的操作方法
2021/09/25 Java/Android
JAVA API 实用类 String详解
2021/10/05 Java/Android
解决Springboot PostMapping无法获取数据的问题
2022/05/06 Java/Android
win10系统计算机图标怎么调出来?win10调出计算机图标的方法
2022/08/14 数码科技