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 解析Json字符串的性能比较分析代码
Dec 16 Javascript
给超链接添加特效鼠标移动展示提示信息且随鼠标移动
Oct 17 Javascript
JS基于FileSystemObject创建一个指定路径的TXT文本文件
Aug 05 Javascript
JS基于Ajax实现的网页Loading效果代码
Oct 27 Javascript
jquery 表单验证之通过 class验证表单不为空
Nov 02 Javascript
类似于QQ的右滑删除效果的实现方法
Oct 16 Javascript
bootstrap模态框消失问题的解决方法
Dec 02 Javascript
js-FCC算法-No repeats please字符串的全排列(详解)
May 02 Javascript
react-redux中connect()方法详细解析
May 27 Javascript
vue中多个倒计时实现代码实例
Mar 27 Javascript
jquery 插件重新绑定的处理方法分析
Nov 23 jQuery
vue setInterval 定时器失效的解决方式
Jul 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中上传多个文件的表单设计例子
2014/11/19 PHP
php倒计时出现-0情况的解决方法
2016/07/28 PHP
php 无限分类 树形数据格式化代码
2016/10/11 PHP
php实现替换手机号中间数字为*号及隐藏IP最后几位的方法
2016/11/16 PHP
Document 对象的常用方法
2009/07/31 Javascript
Javascript中的变量使用说明
2010/05/18 Javascript
控制台报错object is not a function的解决方法
2014/08/24 Javascript
谷歌浏览器不支持showModalDialog模态对话框的解决方法
2014/09/22 Javascript
jQuery中trigger()与bind()用法分析
2015/12/18 Javascript
基于javascript实现泡泡大冒险网页版小游戏
2016/03/23 Javascript
全面解析多种Bootstrap图片轮播效果
2016/05/27 Javascript
jQuery实现的可编辑表格完整实例
2016/06/20 Javascript
jQuery EasyUI学习教程之datagrid点击列表头排序
2016/07/09 Javascript
简单的JS轮播图代码
2016/07/18 Javascript
网站申请不到支付宝接口、微信接口,免接口收款实现方式几种解决办法
2016/12/14 Javascript
JS搜狐面试题分析
2016/12/16 Javascript
jquery 判断是否支持Placeholder属性的方法
2017/02/07 Javascript
图文详解Javascript中的上下文和作用域
2017/02/15 Javascript
JavaScript-定时器0~9抽奖系统详解(代码)
2017/08/16 Javascript
基于vue框架手写一个notify插件实现通知功能的方法
2019/03/31 Javascript
解决Vue调用springboot接口403跨域问题
2019/09/02 Javascript
[51:53]DOTA2-DPC中国联赛 正赛 RNG vs Dragon BO3 第二场 1月24日
2021/03/11 DOTA
解决pycharm工程启动卡住没反应的问题
2019/01/19 Python
详解用python自制微信机器人,定时发送天气预报
2019/03/25 Python
Python实现的插入排序,冒泡排序,快速排序,选择排序算法示例
2019/05/04 Python
python安装pil库方法及代码
2019/06/25 Python
windows上彻底删除jupyter notebook的实现
2020/04/13 Python
通过python调用adb命令对App进行性能测试方式
2020/04/23 Python
CSS3 实现穿梭星空动画
2020/11/13 HTML / CSS
HearthSong官网:儿童户外玩具、儿童益智玩具
2017/10/16 全球购物
美国办公用品折扣网站:Shoplet.com
2019/11/24 全球购物
党的群众路线教育实践活动总结大会主持词
2014/10/30 职场文书
校园歌手大赛主持词
2015/07/03 职场文书
HTML5页面音频自动播放的实现方式
2021/06/21 HTML / CSS
7个关于Python的经典基础案例
2021/11/07 Python
vue-cli3.0修改打包后的文件名和文件地址,打包后本地运行报错解决
2022/04/06 Vue.js