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 相关文章推荐
document.body.scrollTop 值总为0的解决方法 比较常见的标准问题
Nov 30 Javascript
JavaScript DOM 学习第七章 表单的扩展
Feb 19 Javascript
javascript与cookie 的问题详解
Nov 11 Javascript
JavaScript中的逻辑判断符&amp;&amp;、||与!介绍
Dec 31 Javascript
javascript中数组的定义及使用实例
Jan 21 Javascript
Javascript核心读书有感之语言核心
Feb 01 Javascript
JavaScript+html5 canvas实现图片破碎重组动画特效
Feb 22 Javascript
Vuex利用state保存新闻数据实例
Jun 28 Javascript
javascript实现动态时钟的启动和停止
Jul 29 Javascript
浅谈VUE中演示v-for为什么要加key
Jan 16 Javascript
Vue项目打包编译优化方案
Sep 16 Javascript
JavaScript 去重和重复次数统计
Mar 31 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 curl 登录163邮箱并抓取邮箱好友列表的代码(经测试)
2011/04/07 PHP
PHP中防止SQL注入方法详解
2014/12/25 PHP
Codeigniter的dom类用法实例
2015/06/26 PHP
php JWT在web端中的使用方法教程
2018/09/06 PHP
php输出反斜杠的实例方法
2019/09/19 PHP
jQuery中add实现同时选择两个id对象
2010/10/22 Javascript
js实现可拖动DIV的方法
2013/12/17 Javascript
解析jquery中的ajax缓存问题
2013/12/19 Javascript
javascript基本算法汇总
2016/03/09 Javascript
jQuery前端开发35个小技巧
2016/05/24 Javascript
jQuery实现页面点击后退弹出提示框的方法
2016/08/24 Javascript
AngularJs bootstrap搭载前台框架——js控制部分
2016/09/01 Javascript
javascript浏览器用户代理检测脚本实现方法
2017/10/27 Javascript
Javascript中prototype与__proto__的关系详解
2018/03/11 Javascript
vue.js多页面开发环境搭建过程
2019/04/24 Javascript
详解微信小程序胶囊按钮返回|首页自定义导航栏功能
2019/06/14 Javascript
Vue 2.0 中依赖注入 provide/inject组合实战
2019/06/20 Javascript
vue-router之实现导航切换过渡动画效果
2019/10/31 Javascript
解决antd Form 表单校验方法无响应的问题
2020/10/27 Javascript
[02:31]DOTA2帕克 英雄基础教程
2013/11/26 DOTA
python中将阿拉伯数字转换成中文的实现代码
2011/05/19 Python
一波神奇的Python语句、函数与方法的使用技巧总结
2015/12/08 Python
Python 比较两个数组的元素的异同方法
2017/08/17 Python
Python 查找字符在字符串中的位置实例
2018/05/02 Python
python opencv实现图像边缘检测
2019/04/29 Python
使用jupyter notebook直接打开.md格式的文件
2020/04/10 Python
python与idea的集成的实现
2020/11/20 Python
python如何构建mock接口服务
2021/01/28 Python
Nike西班牙官方网站:Nike.com (ES)
2017/10/30 全球购物
有个性的自我评价范文
2013/11/15 职场文书
建筑工程技术应届生求职信
2013/11/17 职场文书
村委会主任先进事迹
2014/01/15 职场文书
支部鉴定材料
2014/06/02 职场文书
公司法定代表人授权委托书
2014/09/29 职场文书
预备党员党支部意见
2015/06/02 职场文书
一看就懂的MySQL的聚簇索引及聚簇索引是如何长高的
2021/05/25 MySQL