JavaScript eval()函数定义及使用方法详解


Posted in Javascript onJuly 07, 2020

定义和用法

eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。

语法

eval(string)

返回值

通过计算 string 得到的值(如果有的话)。

说明

该方法只接受原始字符串作为参数,如果 string 参数不是原始字符串,那么该方法将不作任何改变地返回。因此请不要为 eval() 函数传递 String 对象来作为参数。

如果试图覆盖 eval 属性或把 eval() 方法赋予另一个属性,并通过该属性调用它,则 ECMAScript 实现允许抛出一个 EvalError 异常。

抛出

如果参数中没有合法的表达式和语句,则抛出 SyntaxError 异常。

如果非法调用 eval(),则抛出 EvalError 异常。

如果传递给 eval() 的 Javascript 代码生成了一个异常,eval() 将把该异常传递给调用者。

举例

以下代码可以将"alert('Hello world')"字符串作为参数,转化成javaScprit代码进行执行,浏览器弹出提示框输出'Hello world'

<script type="text/javascript">
  var a = "alert('Hello world')"
  eval(a)
</script>

eval()函数非常强大,我认为它在一定程度上体现出了javaScript这种动态语言的优点。

用这个函数,开发者可以在不改变第三方前端javaScript库源码的基础上,增加功能,或者修改功能,使得程序变得更为灵活。

比如我正在开发一个动态表格的小系统,后台程序将表中的所有字段,以及所有数据传递给前端,前端javaScript代码接收到数据以后,根据字段自动生成表格。但我正在用第三方(layui)js框架,框架里渲染表格的代码必须是固定写好的,不符合动态生成需求,这个时候,可以使用eval()函数。

下面简单看一下layui框架表格部分的使用说明

JavaScript eval()函数定义及使用方法详解

表头部分需要在javaScript代码中固定对应写好,接收到指定数据接口的数据再生成表格。

如果每次需要的表格的字段都不同,列数都不一样。那么就可用eval()函数拼接代码实现了。大致实现思路是,ajax请求到表头的相关数据,javaScript代码根据这些数据自动生成符合框架要求的代码语句,然后传递到eval()函数中直接调用就可以了。非常的灵活与方便。

比如以下伪代码

<script>
  var code1 = "layui.use('table', function(){var table = layui.table;table.render({elem: '#demo',height: 312,url: '/demo/table/user/',page: true,cols: [[{"
  // ...这里根据接收到的表各个字段信息自动拼接代码,形成字符串 code2
  var code2 = "field: 'id', title: 'ID', width:80, sort: true, fixed: 'left'},{field: 'username', title: '用户名', width:80},{field: 'sex', title: '性别', width:80, sort: true},{field: 'city', title: '城市', width:80},{field: 'sign', title: '签名', width: 80},{field: 'experience', title: '积分', width: 80, sort: true},{field: 'score', title: '评分', width: 80, sort: true},{field: 'classify', title: '职业', width: 80},{field: 'wealth', title: '财富', width: 135, sort: false"
  var code3 = "}]]});});"
  var code = code1 + code2 + code3
  eval(code)
</script>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript实现确定和取消提示框效果
Jul 10 Javascript
IE中document.createElement的iframe无法设置属性name的解决方法
Sep 14 Javascript
深入理解jQuery之事件移除
Jun 02 Javascript
浅谈JS中逗号运算符的用法
Jun 12 Javascript
Avalonjs 实现简单购物车功能(实例代码)
Feb 07 Javascript
js仿新浪微博消息发布功能
Feb 17 Javascript
详解AngularJS1.6版本中ui-router路由中/#!/的解决方法
May 22 Javascript
JS轮播图实现简单代码
Feb 19 Javascript
详解如何在vscode里面调试js和node.js的方法步骤
Dec 24 Javascript
详解基于mpvue微信小程序下载远程图片到本地解决思路
May 16 Javascript
《javascript设计模式》学习笔记七:Javascript面向对象程序设计组合模式详解
Apr 08 Javascript
vue 路由缓存 路由嵌套 路由守卫 监听物理返回操作
Aug 06 Javascript
详解React 元素渲染
Jul 07 #Javascript
JS数据类型判断的几种常用方法
Jul 07 #Javascript
JavaScript实现像雪花一样的Hexaflake分形
Jul 07 #Javascript
jQuery 实现扁平式小清新导航
Jul 07 #jQuery
vue@cli3项目模板怎么使用public目录下的静态文件
Jul 07 #Javascript
JS实现移动端可折叠导航菜单(现代都市风)
Jul 07 #Javascript
React+EggJs实现断点续传的示例代码
Jul 07 #Javascript
You might like
《斗罗大陆》六翼天使武魂最强,为什么老千家不是上三宗?
2020/03/02 国漫
发挥语言的威力--融合PHP与ASP
2006/10/09 PHP
sqlyog 中文乱码问题的设置方法
2008/10/19 PHP
php 调试利器debug_print_backtrace()
2012/07/23 PHP
php eval函数用法总结
2012/10/31 PHP
PHP的Yii框架中View视图的使用进阶
2016/03/29 PHP
php脚本守护进程原理与实现方法详解
2017/07/20 PHP
php+js实现的拖动滑块验证码验证表单操作示例【附源码下载】
2020/05/27 PHP
javascript 中对象的继承〔转贴〕
2007/01/22 Javascript
定时器(setTimeout/setInterval)调用带参函数失效解决方法
2013/03/26 Javascript
jquery向上向下取整适合分页查询
2014/09/06 Javascript
jQuery中add()方法用法实例
2015/01/08 Javascript
Angular.js实现动态加载组件详解
2017/05/28 Javascript
JS正则表达式常见用法实例详解
2018/06/19 Javascript
VScode格式化ESlint方法(最全最好用方法)
2019/09/10 Javascript
vue用BMap百度地图实现即时搜索功能
2019/09/26 Javascript
简单谈谈Python流程控制语句
2016/12/04 Python
Python编程实现生成特定范围内不重复多个随机数的2种方法
2017/04/14 Python
微信跳一跳小游戏python脚本
2018/01/05 Python
python计算日期之间的放假日期
2018/06/05 Python
python用pandas数据加载、存储与文件格式的实例
2018/12/07 Python
python制作英语翻译小工具代码实例
2019/09/09 Python
pytorch 批次遍历数据集打印数据的例子
2019/12/30 Python
为什么黑客都用python(123个黑客必备的Python工具)
2020/01/31 Python
Python 面向对象部分知识点小结
2020/03/09 Python
python 实现 hive中类似 lateral view explode的功能示例
2020/05/18 Python
周仰杰(JIMMY CHOO)法国官方网站:闻名世界的鞋子品牌
2019/09/27 全球购物
周年庆典邀请函范文
2014/01/24 职场文书
教师岗位聘任书范文
2014/03/29 职场文书
酒店仓管员岗位职责
2014/04/28 职场文书
幼儿园母亲节活动总结
2015/02/10 职场文书
活动新闻稿范文
2015/07/17 职场文书
详解Redis复制原理
2021/06/04 Redis
Django中session进行权限管理的使用
2021/07/09 Python
python百行代码实现汉服圈图片爬取
2021/11/23 Python
mysql 索引的数据结构为什么要采用B+树
2022/04/26 MySQL