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实现的一个Flash滚动轮换显示图片代码生成器
Mar 14 Javascript
JavaScript下申明对象的几种方法小结
Oct 02 Javascript
jQuery.validate 常用方法及需要注意的问题
Mar 20 Javascript
javascript制作坦克大战全纪录(1)
Nov 27 Javascript
JS获取各种宽度、高度的简单介绍
Dec 19 Javascript
js实现头像图片切割缩放及无刷新上传图片的方法
Jul 17 Javascript
jQuery实现的简单分页示例
Jun 01 Javascript
JS与jQuery实现隔行变色的方法
Sep 09 Javascript
Vue 2.X的状态管理vuex记录详解
Mar 23 Javascript
修改UA在PC中访问只能在微信中打开的链接方法
Nov 27 Javascript
如何解决jQuery 和其他JS库的冲突
Jun 22 jQuery
Vue如何实现组件间通信
May 15 Vue.js
详解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获取表单textarea数据中的换行问题
2010/09/10 PHP
PHP下常用正则表达式整理
2010/10/26 PHP
ThinkPHP让分页保持搜索状态的方法
2014/07/02 PHP
PHP实现WebService的简单示例和实现步骤
2015/03/27 PHP
PHP下使用mysqli的函数连接mysql出现warning: mysqli::real_connect(): (hy000/1040): ...
2016/02/14 PHP
php实现带读写分离功能的MySQL类完整实例
2016/07/28 PHP
php-7.3.6 编译安装过程
2020/02/11 PHP
JAVASCRIPT  THIS详解 面向对象
2009/03/25 Javascript
理解JavaScript变量作用域更轻松
2009/10/25 Javascript
js弹出窗口之弹出层的小例子
2013/06/17 Javascript
JavaScript prototype 使用介绍
2013/08/29 Javascript
Jquery获取和修改img的src值的方法
2014/02/17 Javascript
javascript 中that的含义示例介绍
2014/05/14 Javascript
js使用栈来实现10进制转8进制与取除数及余数
2014/06/11 Javascript
深入理解javascript原型链和继承
2014/09/23 Javascript
jquery实现图片水平滚动效果代码分享
2015/08/26 Javascript
JavaScript对Json的增删改属性详解
2016/06/02 Javascript
jQuery子元素过滤选择器用法示例
2016/09/09 Javascript
微信小程序 框架详解及实例应用
2016/09/26 Javascript
浅谈vuex 闲置状态重置方案
2018/01/04 Javascript
React BootStrap用户体验框架快速上手
2018/03/06 Javascript
详解关于Vuex的action传入多个参数的问题
2019/02/22 Javascript
JS几个常用的函数和对象定义与用法示例
2020/01/15 Javascript
jQuery事件模型默认行为执行顺序及trigger()与 triggerHandler()比较实例分析
2020/04/30 jQuery
在vue-cli3中使用axios获取本地json操作
2020/07/30 Javascript
python 函数传参之传值还是传引用的分析
2017/09/07 Python
pandas series序列转化为星期几的实例
2018/04/11 Python
python skimage 连通性区域检测方法
2018/06/21 Python
解决python写入带有中文的字符到文件错误的问题
2019/01/31 Python
jupyter notebook 多行输出实例
2020/04/09 Python
新学期红领巾广播稿
2014/01/14 职场文书
大学生军训广播稿
2014/01/24 职场文书
ObjectMapper 如何忽略字段大小写
2021/06/29 Java/Android
sql server删除前1000行数据的方法实例
2021/08/30 SQL Server
MySQL 分区表中分区键为什么必须是主键的一部分
2022/03/17 MySQL
SpringBoot项目部署到阿里云服务器的实现步骤
2022/06/28 Java/Android