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 保存数组到Cookie的代码
Apr 14 Javascript
JavaScript中的Web worker多线程API研究
Dec 06 Javascript
jQueryUI DatePicker 添加时分秒
Jun 04 Javascript
jQuery Ajax使用FormData对象上传文件的方法
Sep 07 Javascript
jQuery ajaxForm()的应用
Oct 14 Javascript
JS简单实现数组去重的方法分析
Oct 14 Javascript
详解vue中this.$emit()的返回值是什么
Apr 07 Javascript
微信小程序实现的五星评价功能示例
Apr 25 Javascript
Node.js API详解之 readline模块用法详解
May 22 Javascript
js+for循环实现字符串自动转义的代码(把后面的字符替换前面的字符)
Dec 24 Javascript
分享15个Webpack实用的插件!!!
Mar 31 Javascript
Python机器学习之决策树和随机森林
Jul 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模拟SQL Server的两个日期处理函数
2006/10/09 PHP
php入门小知识
2008/03/24 PHP
php下几个常用的去空、分组、调试数组函数
2009/02/22 PHP
PHP中使用glob函数实现一句话删除某个目录下的所有文件
2014/07/22 PHP
实现PHP框架系列文章(6)mysql数据库方法
2016/03/04 PHP
Expandable &quot;Detail&quot; Table Rows
2007/08/29 Javascript
javascript 强制刷新页面的实现代码
2009/12/13 Javascript
JavaScript与DropDownList 区别分析
2010/01/01 Javascript
jquery 操作日期、星期、元素的追加的实现代码
2012/02/07 Javascript
jQuery建立一个按字母顺序排列的友好页面索引(兼容IE6/7/8)
2013/02/26 Javascript
jQuery写fadeTo示例代码
2014/02/21 Javascript
ExtJS4 动态生成的grid导出为excel示例
2014/05/02 Javascript
利用jQuery设计一个简单的web音乐播放器的实例分享
2016/03/08 Javascript
webpack构建vue项目的详细教程(配置篇)
2017/07/17 Javascript
简易Vue评论框架的实现(父组件的实现)
2018/01/08 Javascript
JS实现的点击按钮图片上下滚动效果示例
2019/01/28 Javascript
详解JavaScript类型判断的四种方法
2020/10/21 Javascript
原生js实现自定义滚动条
2021/01/20 Javascript
[20:57]Ti4主赛事第三天开幕式
2014/07/21 DOTA
[01:32:22]DOTA2-DPC中国联赛 正赛 Ehome vs VG BO3 第一场 2月5日
2021/03/11 DOTA
用于统计项目中代码总行数的Python脚本分享
2015/04/21 Python
Python读写ini文件的方法
2015/05/28 Python
Python中easy_install 和 pip 的安装及使用
2017/06/05 Python
Python模糊查询本地文件夹去除文件后缀的实例(7行代码)
2017/11/09 Python
python 集合 并集、交集 Series list set 转换的实例
2018/05/29 Python
快速解决pyqt5窗体关闭后子线程不同时退出的问题
2019/06/19 Python
python网络编程之多线程同时接受和发送
2019/09/03 Python
使用Keras实现简单线性回归模型操作
2020/06/12 Python
DAWGS鞋官方网站:鞋,凉鞋,靴子
2016/10/04 全球购物
英国最大的老式糖果店:A Quarter Of
2017/04/08 全球购物
Surfdome西班牙:世界上最受欢迎的生活方式品牌
2019/02/13 全球购物
教师学习培训邀请函
2014/02/04 职场文书
授权委托书格式范文
2014/08/02 职场文书
幸福家庭事迹材料
2014/12/20 职场文书
个人收入证明格式
2015/06/24 职场文书
2016元旦晚会主持人开场白和结束语
2015/12/03 职场文书