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 24 Javascript
jQuery中eq()方法用法实例
Jan 05 Javascript
javascript中Date format(js日期格式化)方法小结
Dec 17 Javascript
Javascript removeChild()删除节点及删除子节点的方法
Dec 27 Javascript
实例讲解JavaScript的Backbone.js框架中的View视图
May 05 Javascript
基于JQuery的$.ajax方法进行异步请求导致页面闪烁的解决办法
May 10 Javascript
jquery实现折叠菜单效果【推荐】
Mar 08 Javascript
Angular 4环境准备与Angular cli创建项目详解
May 27 Javascript
jQuery实现简单的回到顶部totop功能示例
Oct 16 jQuery
vue使用better-scroll实现下拉刷新、上拉加载
Nov 23 Javascript
微信小程序一周时间表功能实现
Oct 17 Javascript
jQuery开发仿QQ版音乐播放器
Jul 10 jQuery
详解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
加速XP搜索功能堪比vista
2007/03/22 PHP
php 在线打包_支持子目录
2008/06/28 PHP
openflashchart 2.0 简单案例php版
2012/05/21 PHP
php遍历目录输出目录及其下的所有文件示例
2014/01/27 PHP
使用ltrace工具跟踪PHP库函数调用的方法
2016/04/25 PHP
php pdo连接数据库操作示例
2019/11/18 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
2019/12/20 PHP
jQuery 操作下拉列表框实现代码
2010/02/22 Javascript
当jQuery遭遇CoffeeScript的时候 使用分享
2011/09/17 Javascript
jQuery取得设置清空select选择的文本与值
2014/07/08 Javascript
Jquery ajax加载等待执行结束再继续执行下面代码操作
2015/11/24 Javascript
javascript基础知识
2016/06/07 Javascript
JS如何判断浏览器类型和详细区分IE各版本浏览器
2017/03/04 Javascript
jQuery插件zTree实现获取一级节点数据的方法
2017/03/08 Javascript
详解Vue中状态管理Vuex
2017/05/11 Javascript
浅谈nodejs中的类定义和继承的套路
2017/07/26 NodeJs
iview table高度动态设置方法
2018/03/14 Javascript
jquery实现掷骰子小游戏
2019/10/24 jQuery
JavaScript实现PC端横向轮播图
2020/02/07 Javascript
解决vue项目router切换太慢问题
2020/07/19 Javascript
UEditor 自定义图片视频尺寸校验功能的实现代码
2020/10/20 Javascript
python使用socket向客户端发送数据的方法
2015/04/29 Python
python通过socket查询whois的方法
2015/07/18 Python
Python制作爬虫抓取美女图
2016/01/20 Python
Python+OpenCV实现实时眼动追踪的示例代码
2019/11/11 Python
碧欧泉美国官网:Biotherm美国
2016/08/31 全球购物
Nike俄罗斯官方网站:Nike RU
2021/03/05 全球购物
外贸采购员求职的自我评价
2013/11/26 职场文书
毕业学生推荐信
2013/12/01 职场文书
《寓言两则》教学反思
2014/02/27 职场文书
企业文化标语大全
2014/06/10 职场文书
团队会宣传标语
2014/10/09 职场文书
2015年党员承诺书
2015/01/21 职场文书
2015年度绩效考核工作总结
2015/05/27 职场文书
格林童话读书笔记
2015/06/30 职场文书
MySQL创建管理LIST分区
2022/04/13 MySQL