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 相关文章推荐
一个报数游戏js版(约瑟夫环问题)
Aug 05 Javascript
jQuery的初始化与对象构建之浅析
Apr 12 Javascript
JS控制日期显示的小例子
Nov 23 Javascript
angularjs的一些优化小技巧
Dec 06 Javascript
jQuery元素的隐藏与显示实例
Jan 20 Javascript
input获取焦点时底部菜单被顶上来问题的解决办法
Jan 24 Javascript
详解webpack loader和plugin编写
Oct 12 Javascript
vue组件之间通信方式实例总结【8种方式】
Feb 22 Javascript
使用koa2创建web项目的方法步骤
Mar 12 Javascript
CKEditor 4.4.1 添加代码高亮显示插件功能教程【使用官方推荐Code Snippet插件】
Jun 14 Javascript
在layer弹层layer.prompt中,修改placeholder的实现方法
Sep 27 Javascript
vue使用better-scroll实现滑动以及左右联动
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数组操作汇总 php数组的使用技巧
2011/07/17 PHP
ThinkPHP与PHPExcel冲突解决方法
2011/08/08 PHP
基于PHP文件操作的详细诠释
2013/06/21 PHP
PHP易混淆函数的区别及用法汇总
2014/11/22 PHP
学习php设计模式 php实现状态模式
2015/12/07 PHP
PHP 生成微信红包代码简单
2016/03/25 PHP
php制作圆形用户头像的实例_自定义封装类源代码
2017/09/18 PHP
Yii2框架自定义验证规则操作示例
2019/02/08 PHP
2020最新版 PhpStudy V8.1版本下载安装使用详解
2020/10/30 PHP
javascript中的作用域和上下文使用简要概述
2013/12/05 Javascript
javascript获取flash版本号的方法
2014/11/20 Javascript
jQuery使用之处理页面元素用法实例
2015/01/19 Javascript
简单的jQuery入门指引
2015/07/28 Javascript
JavaScript中的函数(二)
2015/12/23 Javascript
基于jQuery实现select下拉选择可输入附源码下载
2016/02/03 Javascript
vue使用watch 观察路由变化,重新获取内容
2017/03/08 Javascript
浅谈NodeJs之数据库异常处理
2017/10/25 NodeJs
vue和webpack项目构建过程常用的npm命令详解
2018/06/15 Javascript
微信小程序图表插件wx-charts用法实例详解
2019/05/20 Javascript
关于微信小程序获取小程序码并接受buffer流保存为图片的方法
2019/06/07 Javascript
[39:18]完美世界DOTA2联赛PWL S3 Forest vs LBZS 第二场 12.17
2020/12/19 DOTA
[原创]Python入门教程4. 元组基本操作
2018/10/31 Python
Python实现堡垒机模式下远程命令执行操作示例
2019/05/09 Python
pandas条件组合筛选和按范围筛选的示例代码
2019/08/26 Python
Python批量安装卸载1000个apk的方法
2020/04/10 Python
Python web框架(django,flask)实现mysql数据库读写分离的示例
2020/11/18 Python
Lacoste(法国鳄鱼)加拿大官网:以标志性的POLO衫而闻名
2019/05/15 全球购物
广播电视新闻学专业应届生求职信
2013/10/08 职场文书
大学毕业生的自我鉴定
2013/11/30 职场文书
公司证明怎么写
2014/09/22 职场文书
党的群众路线剖析材料
2014/10/09 职场文书
党支部承诺书
2015/01/20 职场文书
入党个人总结范文
2015/03/02 职场文书
基督教追悼会答谢词
2015/09/29 职场文书
《没有任何借口》读后感:完美的执行能力
2020/01/07 职场文书
前端传参数进行Mybatis调用mysql存储过程执行返回值详解
2022/08/14 MySQL