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 相关文章推荐
jQuery-onload让第一次页面加载时图片是淡入方式显示
May 23 Javascript
asm.js使用示例代码
Nov 28 Javascript
jQuery Ajax中的事件详细介绍
Apr 16 Javascript
jquery操作ID带有变量的节点实例
Dec 07 Javascript
vue-dialog的弹出层组件
May 25 Javascript
JavaScript你不知道的一些数组方法
Aug 18 Javascript
vue init webpack myproject构建项目 ip不能访问的解决方法
Mar 20 Javascript
详解如何在Node.js的httpServer中接收前端发送的arraybuffer数据
Nov 11 Javascript
使用puppeteer爬取网站并抓出404无效链接
Dec 20 Javascript
20个必会的JavaScript面试题(小结)
Jul 02 Javascript
Vue开发中遇到的跨域问题及解决方法
Feb 11 Javascript
vue中的双向数据绑定原理与常见操作技巧详解
Mar 16 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利用腾讯ip分享计划获取地理位置示例分享
2014/01/20 PHP
thinkphp隐藏index.php/home并允许访问其他模块的实现方法
2016/10/13 PHP
使用PHPExcel实现数据批量导出为excel表格的方法(必看)
2017/06/09 PHP
TP(thinkPHP)框架多层控制器和多级控制器的使用示例
2018/06/13 PHP
jquery监控数据是否变化(修正版)
2011/04/12 Javascript
Javascript实现div层渐隐效果的方法
2015/05/30 Javascript
深入学习JavaScript中的原型prototype
2015/08/13 Javascript
javascript+css3 实现动态按钮菜单特效
2016/02/06 Javascript
完美的js div拖拽实例代码
2016/09/24 Javascript
bootstrap laydate日期组件使用详解
2017/01/04 Javascript
初探JavaScript 面向对象(推荐)
2017/09/03 Javascript
Vue引入sass并配置全局变量的方法
2018/06/27 Javascript
一秒学会微信小程序制作table表格
2019/02/14 Javascript
微信小程序实现手势滑动效果
2019/08/26 Javascript
vue实现移动端图片上传功能
2019/12/23 Javascript
[01:33]一分钟玩转DOTA2第三弹:DOTA2&DotA快捷操作大对比
2014/06/04 DOTA
python中MySQLdb模块用法实例
2014/11/10 Python
Python兔子毒药问题实例分析
2015/03/05 Python
详解python中的json的基本使用方法
2016/12/21 Python
Python编程之gui程序实现简单文件浏览器代码
2017/12/08 Python
Python图像处理之颜色的定义与使用分析
2019/01/03 Python
Python3enumrate和range对比及示例详解
2019/07/13 Python
python如何从文件读取数据及解析
2019/09/19 Python
Python闭包与装饰器原理及实例解析
2020/04/30 Python
欧洲最大的美妆零售网站:Feelunique
2017/01/14 全球购物
英国演唱会订票网站:Ticket Selection
2018/03/27 全球购物
美体小铺印度官网:The Body Shop印度
2019/10/17 全球购物
工业自动化专业毕业生推荐信
2013/11/18 职场文书
给物业的表扬信
2014/01/21 职场文书
CAD制图人员的自荐信
2014/02/07 职场文书
学校政风行风评议工作总结
2014/10/21 职场文书
2015年清明节活动总结
2015/02/09 职场文书
个人简历求职信范文
2015/03/20 职场文书
人民币使用说明书
2019/04/17 职场文书
python​格式化字符串
2022/04/20 Python