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 相关文章推荐
jquery 关键字“拖曳搜索”之“拖曳”以及 图片“提示自适应放大”效果 的实现
Apr 18 Javascript
javascript中声明函数的方法及调用函数的返回值
Jul 22 Javascript
jQuery Tags Input Plugin(添加/删除标签插件)详解
Jun 20 Javascript
JS与jQuery实现隔行变色的方法
Sep 09 Javascript
jQuery选择器之子元素过滤选择器
Sep 28 jQuery
vue-router项目实战总结篇
Feb 11 Javascript
详解webpack-dev-server 设置反向代理解决跨域问题
Apr 18 Javascript
解决vue js IOS H5focus无法自动弹出键盘的问题
Aug 30 Javascript
js使用formData实现批量上传
Mar 27 Javascript
JavaScript中关于base64的一些事
May 06 Javascript
jQuery cookie的公共方法封装和使用示例
Jun 01 jQuery
vant-ui组件调用Dialog弹窗异步关闭操作
Nov 04 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模拟HTTP认证
2006/10/09 PHP
php快速查找数据库中恶意代码的方法
2015/04/01 PHP
[原创]php常用字符串输出方法分析(echo,print,printf及sprintf)
2016/07/09 PHP
详解no input file specified 三种解决方法
2019/11/29 PHP
Ajax+Json 级联菜单实现代码
2009/10/27 Javascript
JavaScript中SQL语句的应用实现
2010/05/04 Javascript
用javascript关闭本窗口不弹出询问框的方法
2014/09/12 Javascript
JS实现两表格里数据来回转移的方法
2015/05/28 Javascript
jQuery改变form表单的action,并进行提交的实现代码
2016/05/25 Javascript
node.js cookie-parser 中间件介绍
2016/06/06 Javascript
Vuejs实现带样式的单文件组件新方法
2017/05/02 Javascript
用户管理的设计_jquery的ajax实现二级联动效果
2017/07/13 jQuery
浅谈Angular7 项目开发总结
2018/12/19 Javascript
最简单的JS实现json转csv的方法
2019/01/10 Javascript
vue实现条件叠加搜索的解决方法
2019/05/28 Javascript
npm 语义版本控制详解
2019/09/10 Javascript
Vue的v-model的几种修饰符.lazy,.number和.trim的用法说明
2020/08/05 Javascript
独特的python循环语句
2016/11/20 Python
python使用标准库根据进程名如何获取进程的pid详解
2017/10/31 Python
Python数据结构与算法之二叉树结构定义与遍历方法详解
2017/12/12 Python
用tensorflow实现弹性网络回归算法
2018/01/09 Python
我喜欢你 抖音表白程序python版
2019/04/07 Python
Python实现html转换为pdf报告(生成pdf报告)功能示例
2019/05/04 Python
python实现Dijkstra算法的最短路径问题
2019/06/21 Python
Python3 列表,数组,矩阵的相互转换的方法示例
2019/08/05 Python
Python如何设置指定窗口为前台活动窗口
2020/08/12 Python
家长给孩子的评语
2014/01/30 职场文书
护士毕业自我鉴定
2014/02/07 职场文书
活动总结报告范文
2014/05/04 职场文书
党员服务承诺书
2014/05/28 职场文书
消防宣传口号
2014/06/16 职场文书
理财学专业自荐书
2014/06/28 职场文书
Nginx解决403 forbidden的完整步骤
2021/04/01 Servers
CSS实现两列布局的N种方法
2021/08/02 HTML / CSS
【海涛解说】pis亲自推荐,其实你从来不会玩NW
2022/04/01 DOTA
使用 MybatisPlus 连接 SqlServer 数据库解决 OFFSET 分页问题
2022/04/22 SQL Server