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 相关文章推荐
JS 学习笔记 防止发生命名冲突
Jul 30 Javascript
用示例说明filter()与find()的用法以及children()与find()的区别分析
Apr 26 Javascript
jquery获取一个元素下面相同子元素的个数代码
Jul 31 Javascript
jquery复选框多选赋值给文本框的方法
Jan 27 Javascript
JS+HTML5 FileReader实现文件上传前本地预览功能
Mar 27 Javascript
JavaScript截屏功能的实现代码
Jul 28 Javascript
使用Node.js搭建静态资源服务详细教程
Aug 02 Javascript
node实现socket链接与GPRS进行通信的方法
May 20 Javascript
详解mpvue实现对苹果X安全区域的适配
Jul 31 Javascript
JavaScript闭包原理与用法学习笔记
May 29 Javascript
原生js canvas实现鼠标跟随效果
Aug 02 Javascript
解决vue加scoped后就无法修改vant的UI组件的样式问题
Sep 07 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
基于数据库的在线人数,日访问量等统计
2006/10/09 PHP
Windows下利用Gvim写PHP产生中文乱码问题解决方法
2011/04/20 PHP
php的XML文件解释类应用实例
2014/09/22 PHP
在Win7 中为php扩展配置Xcache
2014/10/08 PHP
php数组去除空值函数分享
2015/02/02 PHP
Yii2增加验证码步骤详解
2016/04/25 PHP
PHP在同一域名下两个不同的项目做独立登录机制详解
2017/09/22 PHP
js 模式窗口(模式对话框和非模式对话框)的使用介绍
2014/07/17 Javascript
jQuery获取标签文本内容和html内容的方法
2015/03/27 Javascript
12个超实用的JQuery代码片段
2015/11/02 Javascript
jquery背景跟随鼠标滑动导航
2015/11/20 Javascript
ztree获取选中节点时不能进入可视区域出现BUG如何解决
2015/12/03 Javascript
Angular 2父子组件数据传递之@ViewChild获取子组件详解
2017/07/04 Javascript
js replace 全局替换的操作方法
2018/06/12 Javascript
详解React服务端渲染从入门到精通
2019/03/28 Javascript
Vue SPA 初次进入加载动画实现代码
2019/11/14 Javascript
[02:22]《新闻直播间》2017年08月14日
2017/08/15 DOTA
haskell实现多线程服务器实例代码
2013/11/26 Python
python引入导入自定义模块和外部文件的实例
2017/07/24 Python
python爬虫_自动获取seebug的poc实例
2017/08/05 Python
使用Python如何测试InnoDB与MyISAM的读写性能
2018/09/18 Python
如何使用Python实现自动化水军评论
2019/06/26 Python
python实现的自动发送消息功能详解
2019/08/15 Python
pytorch神经网络之卷积层与全连接层参数的设置方法
2019/08/18 Python
Python数据可视化:幂律分布实例详解
2019/12/07 Python
Pytorch实现各种2d卷积示例
2019/12/30 Python
使用Python爬虫库requests发送表单数据和JSON数据
2020/01/25 Python
python GUI库图形界面开发之PyQt5浏览器控件QWebEngineView详细使用方法
2020/02/26 Python
Python中格式化字符串的四种实现
2020/05/26 Python
使用CSS3 制作一个material-design 风格登录界面实例
2016/12/12 HTML / CSS
有机童装:Toby Tiger
2018/05/23 全球购物
意大利中国电子产品购物网站:Geekmall.com
2019/09/30 全球购物
Servlet的实例是在生命周期什么时候创建的?配置servlet最重要的是什么?
2012/05/30 面试题
集团公司人力资源部岗位职责
2014/01/03 职场文书
企业总经理任命书
2014/06/05 职场文书
JavaScript实现两个数组的交集
2022/03/25 Javascript