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实现多维数组的方法
Nov 20 Javascript
jquery使用append(content)方法注意事项分享
Jan 06 Javascript
使用jquery组件qrcode生成二维码及应用指南
Feb 22 Javascript
JS定义网页表单提交(submit)的方法
Mar 20 Javascript
jquery实现图片随机排列的方法
May 04 Javascript
innerHTML中标签可以换行的方法汇总
Aug 14 Javascript
jQuery EasyUI Panel面板组件使用详解
Feb 28 Javascript
JavaScript 函数的定义-调用、注意事项
Apr 16 Javascript
vue axios用法教程详解
Jul 23 Javascript
Angularjs上传图片实例详解
Aug 06 Javascript
vue脚手架中配置Sass的方法
Jan 04 Javascript
CKeditor富文本编辑器使用技巧之添加自定义插件的方法
Jun 14 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
优化NFR之一 --MSSQL Hello Buffer Overflow
2006/10/09 PHP
浅谈Coreseek、Sphinx-for-chinaese、Sphinx+Scws的区别
2016/12/15 PHP
javascript编程起步(第四课)
2007/01/10 Javascript
JQuery 学习笔记01 JQuery初接触
2010/05/06 Javascript
js打开新窗口方法整理
2014/02/17 Javascript
javascript动态创建表格及添加数据实例详解
2015/05/13 Javascript
seajs加载jquery时提示$ is not a function该怎么解决
2015/10/23 Javascript
JS获取数组最大值、最小值及长度的方法
2015/11/24 Javascript
基于canvas实现的绚丽圆圈效果完整实例
2016/01/26 Javascript
js调用屏幕宽度的简单方法
2016/11/14 Javascript
使用vue.js2.0 + ElementUI开发后台管理系统详细教程(一)
2017/01/21 Javascript
vue-resourse将json数据输出实例
2017/03/08 Javascript
获取url中用&amp;隔开的参数实例(分享)
2017/05/28 Javascript
JS原生轮播图的简单实现(推荐)
2017/07/22 Javascript
微信小程序 功能函数小结(手机号验证*、密码验证*、获取验证码*)
2017/12/08 Javascript
nodejs+mongodb aggregate级联查询操作示例
2018/03/17 NodeJs
Layui给数据表格动态添加一行并跳转到添加行所在页的方法
2018/08/20 Javascript
angular4自定义表单控件[(ngModel)]的实现
2018/11/23 Javascript
vue-form表单验证是否为空值的实例详解
2019/10/29 Javascript
[01:14]辉夜杯战队访谈宣传片—NEWBEE.Y
2015/12/26 DOTA
Python实现Linux命令xxd -i功能
2016/03/06 Python
Python设计足球联赛赛程表程序的思路与简单实现示例
2016/06/28 Python
Python虚拟环境virtualenv的安装与使用详解
2017/05/28 Python
Python OpenCV利用笔记本摄像头实现人脸检测
2020/08/20 Python
python使用pygame模块实现坦克大战游戏
2020/03/25 Python
python如何制作英文字典
2019/06/25 Python
CSS3 rgb and rgba(透明色)的使用详解
2020/09/25 HTML / CSS
SEPHORA新西兰官方网站:购买化妆品和护肤品
2016/12/02 全球购物
static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?
2015/02/22 面试题
《望洞庭》教学反思
2014/02/16 职场文书
维护民族团结演讲稿
2014/08/27 职场文书
大班下学期个人总结
2015/02/13 职场文书
商业计划书范文
2019/04/24 职场文书
公司财务制度:成本管理控制制度模板
2019/11/19 职场文书
Nginx+SpringBoot实现负载均衡的示例
2021/03/31 Servers
windows系统搭建WEB服务器详细教程
2022/08/05 Servers