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 相关文章推荐
tagName的使用,留一笔
Jun 26 Javascript
js确定对象类型方法
Mar 30 Javascript
Javascript 键盘事件的组合使用实现代码
May 04 Javascript
页面实时更新时间的JS实例代码
Dec 18 Javascript
JS实现的鼠标跟随代码(卡通手型点击效果)
Oct 26 Javascript
Vue.js父与子组件之间传参示例
Feb 28 Javascript
Bootstrap表单制作代码
Mar 17 Javascript
js 数字、字符串、布尔值的转换方法(必看)
Apr 07 Javascript
使用layui的layer组件做弹出层的例子
Sep 27 Javascript
vue使用prop可以渲染但是打印台报错的解决方式
Nov 13 Javascript
JS如何实现封装列表右滑动删除收藏按钮
Jul 23 Javascript
javascript实现电商放大镜效果
Nov 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
json跟xml的对比分析
2008/06/10 Javascript
innerhtml用法 innertext用法 以及innerHTML与innertext的区别
2009/10/26 Javascript
js查错流程归纳
2012/05/04 Javascript
jQuery 联动日历实现代码
2012/05/31 Javascript
Javascript倒计时页面跳转实例小结
2013/09/11 Javascript
node.js中的http.response.write方法使用说明
2014/12/14 Javascript
jQuery实现内容定时切换效果完整实例
2016/04/06 Javascript
JS实现的适合做faq或menu滑动效果示例
2016/11/17 Javascript
js return返回多个值,通过对象的属性访问方法
2017/02/21 Javascript
Jquery+Ajax+xml实现中国地区选择三级联动菜单效果(推荐)
2017/06/09 jQuery
通过命令行生成vue项目框架的方法
2017/07/12 Javascript
jQuery 利用ztree实现树形表格的实例代码
2017/09/27 jQuery
Vue.js自定义事件的表单输入组件方法
2018/03/08 Javascript
Vue写一个简单的倒计时按钮功能
2018/04/20 Javascript
vue2.x 通过后端接口代理,获取qq音乐api的数据示例
2019/10/30 Javascript
Python开发如何在ubuntu 15.10 上配置vim
2016/01/25 Python
python利用正则表达式提取字符串
2016/12/08 Python
python 链接和操作 memcache方法
2017/03/04 Python
Python设计模式之门面模式简单示例
2018/01/09 Python
python编程嵌套函数实例代码
2018/02/11 Python
Python中max函数用于二维列表的实例
2018/04/03 Python
对Python 文件夹遍历和文件查找的实例讲解
2018/04/26 Python
pandas-resample按时间聚合实例
2019/12/27 Python
python使用rsa非对称加密过程解析
2019/12/28 Python
基于python3实现倒叙字符串
2020/02/18 Python
python 基于opencv实现高斯平滑
2020/12/18 Python
HTML5 File接口在web页面上使用文件下载
2017/02/27 HTML / CSS
护士实习求职信
2014/06/22 职场文书
老干部工作先进事迹
2014/08/17 职场文书
纪律教育学习月活动总结
2014/08/27 职场文书
2014乡党委副书记党建工作汇报材料
2014/11/02 职场文书
优秀创业计划书分享
2019/07/19 职场文书
曾国藩励志经典名言37句,蕴含哲理
2019/10/14 职场文书
python自动化八大定位元素讲解
2021/07/09 Python
Python实现GIF动图以及视频卡通化详解
2021/12/06 Python
SQL Server携程核心系统无感迁移到MySQL实战
2022/06/01 SQL Server