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 兼容firefox的一些问题
May 21 Javascript
JavaScript 组件之旅(二)编码实现和算法
Oct 28 Javascript
javascript 运算数的求值顺序
Aug 23 Javascript
JS实现兼容性好,带缓冲的动感网页右键菜单效果
Sep 18 Javascript
js实现拖拽效果(构造函数)
Dec 14 Javascript
jQuery实现HTML表格单元格的合并功能
Apr 06 Javascript
jQuery实现自动输入email、时间和域名的方法
Aug 24 Javascript
Javascript之面向对象--接口
Dec 02 Javascript
详解JavaScript时间处理之几个月前或几个月后的指定日期
Dec 21 Javascript
微信小程序 详解下拉加载与上拉刷新实现方法
Jan 13 Javascript
fullpage.js最后一屏滚动方式
Feb 06 Javascript
vue addRoutes实现动态权限路由菜单的示例
May 15 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
php URL编码解码函数代码
2009/03/10 PHP
PHP 模拟$_PUT实现代码
2010/03/15 PHP
Linux下从零开始安装配置Nginx服务器+PHP开发环境
2015/12/21 PHP
PHP+Redis 消息队列 实现高并发下注册人数统计的实例
2018/01/29 PHP
PHP正则表达式函数preg_replace用法实例分析
2020/06/04 PHP
JS中处理与当前时间间隔的函数代码
2012/05/23 Javascript
浅谈javascript回调函数
2014/12/07 Javascript
jQuery获取DOM节点实例分析(2种方式)
2015/12/15 Javascript
微信小程序 解决请求服务器手机预览请求不到数据的方法
2017/01/04 Javascript
angular学习之ngRoute路由机制
2017/04/12 Javascript
jQuery遍历节点方法汇总(推荐)
2017/05/13 jQuery
浅析从vue源码看观察者模式
2018/01/29 Javascript
基于vue2.0的活动倒计时组件countdown(附源码下载)
2018/10/09 Javascript
vue穿梭框实现上下移动
2021/01/29 Vue.js
Python操作json数据的一个简单例子
2014/04/17 Python
利用Python操作消息队列RabbitMQ的方法教程
2017/07/19 Python
python调用API实现智能回复机器人
2018/04/10 Python
Python之列表的插入&amp;替换修改方法
2018/06/28 Python
python实现的自动发送消息功能详解
2019/08/15 Python
详解Django配置优化方法
2019/11/18 Python
使用tensorflow实现矩阵分解方式
2020/02/07 Python
Django如何继承AbstractUser扩展字段
2020/11/27 Python
css3和jquery实现自定义checkbox和radiobox组件
2014/04/22 HTML / CSS
H5新属性audio音频和video视频的控制详解(推荐)
2016/12/09 HTML / CSS
澳大利亚领先的宠物用品商店:VetSupply
2017/09/08 全球购物
Java面试题:Java类的Main方法如果是Private将会怎么样
2016/08/18 面试题
费用会计岗位职责
2014/01/01 职场文书
竞聘上岗演讲稿范文
2014/01/10 职场文书
化工专业大学生职业生涯规划书
2014/01/14 职场文书
初二物理教学反思
2014/01/29 职场文书
知名企业招聘广告词大全
2014/03/18 职场文书
文明礼貌演讲稿
2014/05/12 职场文书
新郎答谢词
2015/01/04 职场文书
医学生自荐信范文
2015/03/05 职场文书
2015年六一儿童节演讲稿
2015/03/19 职场文书
python的html标准库
2022/04/29 Python