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表单常用验证集合
Jan 16 Javascript
让ie6也支持websocket采用flash封装实现
Feb 18 Javascript
js识别不同浏览器基于userAgent做判断
Jul 29 Javascript
javascript清空table表格的方法
May 14 Javascript
jquery简单实现带渐显效果的选项卡菜单代码
Sep 01 Javascript
javascript for-in有序遍历json数据并探讨各个浏览器差异
Nov 30 Javascript
聊一聊jQuery插件uploadify使用方法
Aug 24 Javascript
jQuery实现表格冻结顶栏效果
Aug 20 jQuery
javascript 作用于作用域链的详解
Sep 27 Javascript
Vue打包后访问静态资源路径问题
Nov 08 Javascript
Electron整合React使用搭建开发环境的步骤详解
Jun 07 Javascript
基于小程序请求接口wx.request封装的类axios请求
Jul 02 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中fwrite与file_put_contents性能测试代码
2013/08/02 PHP
php读取der格式证书乱码解决方法
2015/06/22 PHP
php简单复制文件的方法
2016/05/09 PHP
使用firebug进行调试javascript的示例
2013/12/16 Javascript
用js模拟struts2的多action调用示例
2014/05/19 Javascript
node.js中的buffer.write方法使用说明
2014/12/10 Javascript
jQuery中:radio选择器用法实例
2015/01/03 Javascript
JQuery显示、隐藏div的几种方法简明总结
2015/04/16 Javascript
JavaScript使用addEventListener添加事件监听用法实例
2015/06/01 Javascript
JS实现从网页顶部掉下弹出层效果的方法
2015/08/06 Javascript
javascript适合移动端的日期时间拾取器
2015/11/10 Javascript
浅谈JavaScript中的分支结构
2016/07/01 Javascript
利用JQuery直接调用asp.net后台的简单方法
2016/10/27 Javascript
原生JS实现N级菜单的代码
2017/05/21 Javascript
本地搭建微信小程序服务器的实现方法
2017/10/27 Javascript
Vue登录注册并保持登录状态的方法
2018/08/17 Javascript
JavaScript Reflect Metadata实现详解
2019/12/12 Javascript
vue+vant使用图片预览功能ImagePreview的问题解决
2020/04/10 Javascript
vue-socket.io接收不到数据问题的解决方法
2020/05/13 Javascript
jQuery实现雪花飘落效果
2020/08/02 jQuery
[01:43]倾听DOTA2英雄之声 魅惑魔女国服配音鉴赏
2013/06/06 DOTA
Python随机生成彩票号码的方法
2015/03/05 Python
Django框架中render_to_response()函数的使用方法
2015/07/16 Python
神经网络(BP)算法Python实现及应用
2018/04/16 Python
python3获取当前文件的上一级目录实例
2018/04/26 Python
打包python 加icon 去掉cmd黑窗口方法
2019/06/24 Python
PyCharm-错误-找不到指定文件python.exe的解决方法
2019/07/01 Python
基础的CSS3弹性盒Flexbox布局使用实例
2016/04/08 HTML / CSS
利用css3径向渐变做一张优惠券的示例
2018/03/22 HTML / CSS
HTML5 Canvas——用路径描画线条实例介绍
2013/06/09 HTML / CSS
canvas探照灯效果的示例代码
2018/11/30 HTML / CSS
周生生珠宝香港官网:Chow Sang Sang(香港及海外配送)
2019/09/05 全球购物
娇韵诗香港官网:Clarins香港
2020/08/13 全球购物
《歌唱二小放牛郎》教学反思
2014/04/19 职场文书
历史学专业求职信
2014/06/19 职场文书
毕业生登记表班级意见
2015/06/05 职场文书