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 数组克隆方法 小结
Mar 20 Javascript
onmouseover和onmouseout的一些问题思考
Aug 14 Javascript
在JavaScript中操作时间之setYear()方法的使用
Jun 12 Javascript
jQuery提示插件qTip2用法分析(支持ajax及多种样式)
Jun 08 Javascript
knockoutjs动态加载外部的file作为component中的template数据源的实现方法
Sep 01 Javascript
JavaScript学习笔记整理_简单实现枚举类型,扑克牌应用
Sep 19 Javascript
微信小程序 实现动态显示和隐藏某个控件
Apr 27 Javascript
JS中去掉array中重复元素的方法
May 26 Javascript
JS手机端touch事件计算滑动距离的方法示例
Oct 26 Javascript
微信小程序6位或多位验证码密码输入框功能的实现代码
May 29 Javascript
微信小程序定义和调用全局变量globalData的实现
Nov 01 Javascript
vue.js watch经常失效的场景与解决方案
Jan 07 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
重新封装zend_soap实现http连接安全认证的php代码
2011/01/12 PHP
PHP函数篇之掌握ord()与chr()函数应用
2011/12/05 PHP
在openSUSE42.1下编译安装PHP7 的方法
2015/12/24 PHP
原生php实现excel文件读写的方法分析
2018/04/25 PHP
Jquery Ajax.ashx 高效分页实现代码
2009/10/20 Javascript
基于Jquery的文字自动截取(提供源代码)
2011/08/09 Javascript
开发中可能会用到的jQuery小技巧
2014/03/07 Javascript
JavaScript的null和undefined区别示例介绍
2014/09/15 Javascript
JavaScript lastIndexOf方法入门实例(计算指定字符在字符串中最后一次出现的位置)
2014/10/17 Javascript
浅谈javascript属性onresize
2015/04/20 Javascript
DOM事件阶段以及事件捕获与事件冒泡先后执行顺序(图文详解)
2015/08/18 Javascript
JS实现先显示大图后自动收起显示小图的广告代码
2015/09/04 Javascript
JavaScript数据结构与算法之集合(Set)
2016/01/29 Javascript
jQuery子元素过滤选择器用法示例
2016/09/09 Javascript
概述jQuery中的ajax方法
2016/12/16 Javascript
利用javascript实现的三种图片放大镜效果实例(附源码)
2017/01/23 Javascript
vue实现简单学生信息管理
2020/05/30 Javascript
解决VUE mounted 钩子函数执行时 img 未加载导致页面布局的问题
2020/07/27 Javascript
python实现dict版图遍历示例
2014/02/19 Python
python操作CouchDB的方法
2014/10/08 Python
用Python写飞机大战游戏之pygame入门(4):获取鼠标的位置及运动
2015/11/05 Python
Python处理XML格式数据的方法详解
2017/03/21 Python
Python入门_学会创建并调用函数的方法
2017/05/16 Python
Python正则表达式指南 推荐
2018/10/09 Python
对django中render()与render_to_response()的区别详解
2018/10/16 Python
解决Python2.7中IDLE启动没有反应的问题
2018/11/30 Python
python爬取代理IP并进行有效的IP测试实现
2020/10/09 Python
python regex库实例用法总结
2021/01/03 Python
GAP欧盟网上商店:GAP EU
2016/09/13 全球购物
《东方明珠》教学反思
2014/04/20 职场文书
保护水资源的标语
2014/06/17 职场文书
小学生民族团结演讲稿
2014/08/27 职场文书
党的群众路线教育实践活动领导班子整改措施
2014/09/30 职场文书
四风查摆问题及整改措施
2014/10/10 职场文书
提档介绍信范文
2015/10/22 职场文书
Echarts如何重新渲染实例详解
2022/05/30 Javascript