Javascript中Eval函数的使用说明


Posted in Javascript onOctober 11, 2008

举个小例子:

var the_unevaled_answer = "2 + 3"; 
var the_evaled_answer = eval("2 + 3"); 
alert("the un-evaled answer is " + the_unevaled_answer + " and the evaled answer is " + the_evaled_answer);

如果你运行这段eval程序, 你将会看到在JavaScript里字符串"2 + 3"实际上被执行了。
所以当你把the_evaled_answer的值设成 eval("2 + 3")时, JavaScript将会明白并把2和3的和返回给the_evaled_answer。
这个看起来似乎有点傻,其实可以做出很有趣的事。比如使用eval你可以根据用户的输入直接创建函数。
这可以使程序根据时间或用户输入的不同而使程序本身发生变化,通过举一反三,你可以获得惊人的效果。
在实际中,eval很少被用到,但也许你见过有人使用eval来获取难以索引的对象。
文档对象模型(DOM)的问题之一是:有时你要获取你要求的对象简直就是痛苦。
例如,这里有一个函数询问用户要变换哪个图象:变换哪个图象你可以用下面这个函数:
function swapOne()
{
var the_image = prompt("change parrot or cheese","");
var the_image_object;
if (the_image == "parrot")
{
the_image_object = window.document.parrot;
}
else
{
the_image_object = window.document.cheese;
}
the_image_object.src = "ant.gif";
}
连同这些image标记:
[img src="/stuff3a/parrot.gif" name="parrot"]
[img src="/stuff3a/cheese.gif" name="cheese"]
请注意象这样的几行语句:
the_image_object = window.document.parrot;
它把一个图象对象敷给了一个变量。虽然看起来有点儿奇怪,它在语法上却毫无问题。
但当你有100个而不是两个图象时怎么办?你只好写上一大堆的 if-then-else语句,要是能象这样就好了:
function swapTwo()
{
var the_image = prompt("change parrot or cheese","");
window.document.the_image.src = "ant.gif";
}
不幸的是, JavaScript将会寻找名字叫 the_image而不是你所希望的"cheese"或者"parrot"的图象,
于是你得到了错误信息:”没听说过一个名为the_image的对象”。
还好,eval能够帮你得到你想要的对象。
function simpleSwap()
{
var the_image = prompt("change parrot or cheese","");
var the_image_name = "window.document." + the_image;
var the_image_object = eval(the_image_name);
the_image_object.src = "ant.gif";
}
如果用户在提示框里填入"parrot",在第二行里创建了一个字符串即window.document.parrot. 然后包含了eval的第三
行意思是: "给我对象window.document.parrot" - 也就是你要的那个图象对象。一旦你获取了这个图象对象,你可以把
它的src属性设为ant.gif. 有点害怕?用不着。其实这相当有用,人们也经常使用它。
我们常常在Javascript中间到Eval这个函数,
有些人觉得这个函数很奇怪,可以把一些字符串变的功能很强大
在我们需要将普通的字符串转变成具体的对象的时候,就会用到这个函数
eval 函数对作为数字表达式的一个字符串进行求值,其语法为:
eval(expr)
此处 expr 是一个被求值的字符串参数。如果该字符串是一个表达式,eval 求该表达式的值;如果该参数代表一个或多个 JavaScript 语句,那么 eval 执行这些语句。eval 函数可以用来把一个日期从一种格式(总是字符串)转换为数值表达式或数字。
==============================
Eval 函数
功能:先解释Javascript代码,然后在执行它
用法:Eval(codeString)
codeString是包含有Javascript语句的字符串,在eval之后使用Javascript引擎编译。
注释:
例子:eval(id + "_icon.src="/imgs/collapse_up.gif'");
id是之前设定的参数,而在双引号中的字符串则是需要编译的
引用:
function tophide(id) //id indicates menu 
{ 
if (top.topframeset.rows == "31,*") 
{ 
top.topframeset.rows = "86,*"; 
eval(id + "_icon.src="/imgs/collapse_up.gif'"); 
eval(id + "_icon.alt='Collapse The Head'"); 
head.style.display = "block" 
} 
else 
{ 
top.topframeset.rows = "31,*"; 
eval(id + "_icon.src="/imgs/collapse_down.gif'"); 
eval(id + "_icon.alt='Expand The Head'"); 
head.style.display = "none" 
} 
}
Javascript 相关文章推荐
jQuery Ajax之load()方法
Oct 12 Javascript
jquery构造器的实现代码小结
May 16 Javascript
浅析jquery的作用与优势
Dec 02 Javascript
JSP中使用JavaScript动态插入删除输入框实现代码
Jun 13 Javascript
浅谈JavaScript数据类型及转换
Feb 28 Javascript
javascript学习小结之prototype
Dec 03 Javascript
AngularJS数据源的多种获取方式汇总
Feb 02 Javascript
jQuery实现表格元素动态创建功能
Jan 09 Javascript
React学习笔记之列表渲染示例详解
Aug 22 Javascript
JavaScript fetch接口案例解析
Aug 30 Javascript
微信小程序实现自定义底部导航
Nov 18 Javascript
详解Anyscript开发指南绕过typescript类型检查
Sep 23 Javascript
JavaScript更改class和id的方法
Oct 10 #Javascript
ppk谈JavaScript style属性
Oct 10 #Javascript
用javascript getComputedStyle获取和设置style的原理
Oct 10 #Javascript
执行iframe中的javascript方法
Oct 07 #Javascript
JS版网站风格切换实例代码
Oct 06 #Javascript
判断JavaScript对象是否可用的最正确方法分析
Oct 03 #Javascript
IE与firefox之jquery用法区别
Oct 03 #Javascript
You might like
给多个地址发邮件的类
2006/10/09 PHP
PHP5 面向对象程序设计
2008/02/13 PHP
php中一个完整表单处理实现代码
2011/11/10 PHP
discuz免激活同步登入代码修改方法(discuz同步登录)
2013/12/24 PHP
PHP实现HTTP断点续传的方法
2015/06/17 PHP
使用PHP实现微信摇一摇周边红包
2016/01/04 PHP
基于thinkPHP实现的微信自定义分享功能示例
2016/09/23 PHP
ecshop添加菜单及权限分配问题
2017/11/21 PHP
greybox——不开新窗口看新的网页
2007/02/20 Javascript
javascript中的nextSibling使用陷(da)阱(keng)
2014/05/05 Javascript
jQuery制作仿Mac Lion OS滚动条效果
2015/02/10 Javascript
JS基于面向对象实现的放烟花效果
2015/05/07 Javascript
mvvm双向绑定机制的原理和实现代码(推荐)
2016/06/07 Javascript
nodejs后台集成ueditor富文本编辑器的实例
2017/07/11 NodeJs
利用原生js实现html5小游戏之打砖块(附源码)
2018/01/03 Javascript
详解微信小程序调用支付接口支付
2019/04/28 Javascript
通过扫小程序码实现网站登陆功能
2019/08/22 Javascript
小程序跳转到的H5页面再跳转回跳小程序的方法
2020/03/06 Javascript
vuecli3.x中轻松4步带你使用tinymce的步骤
2020/06/25 Javascript
python在windows和linux下获得本机本地ip地址方法小结
2015/03/20 Python
Python读写配置文件的方法
2015/06/03 Python
Python实现PS滤镜特效之扇形变换效果示例
2018/01/26 Python
Python标准库笔记struct模块的使用
2018/02/22 Python
使用Python画了一棵圣诞树的实例代码
2020/11/27 Python
python 实现简易的记事本
2020/11/30 Python
CSS3 伪类选择器 nth-child()说明
2010/07/10 HTML / CSS
乌克兰品牌化妆品和香水在线商店:Bomond
2020/01/14 全球购物
Nike意大利官网:Nike.com IT
2020/01/19 全球购物
Weblogic和WebSphere不同特点
2012/05/09 面试题
应届医学毕业生求职信分享
2013/12/02 职场文书
技校学生个人职业生涯规划范文
2014/03/03 职场文书
最新结婚典礼主持词
2014/03/14 职场文书
有子女的离婚协议书怎么写(范本)
2014/09/29 职场文书
党员教师批评与自我批评发言稿
2014/10/15 职场文书
简历上的自我评价,该怎么写呢?
2019/06/13 职场文书
html5+实现plus.io进行拍照和图片等获取
2022/06/01 HTML / CSS