JavaScrip Zone


新发表

新评论

留言信息

链接收藏

『中国群落博客』

免费注册博客通道

快速登陆


在Javascript中Eval函数的使用?

等你需要动态创建语句的时候,你将会发现它非常独特的作用,上网看了半天,找到些零散的内容,想来也算非常全面的了,全部把它收集起来放在这里以备后用,也供大家讨论学习使用。

【eval()函数】

JavaScript有许多小窍门来使编程更加容易。
其中之一就是eval()函数,这个函数可以把一个字符串当作一个JavaScript表达式一样去执行它。
举个小例子:

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"
    }
}


                                                                 2005-8-18 18:49:52

Posted by jser | 阅读全文() | 回复(26) | 引用通告() | 编辑

Re:在Javascript中Eval函数的使用?

http://www.onlywowgold.com--oxx-wow gold-xxo--wow gold
                                                                 2008-10-16 3:47:16

Posted by seo(游客) | 个人主页 | 引用 | 返回 | 删除

Re:在Javascript中Eval函数的使用?

嗯,不错 1.老师在讲课时,oil filtration希望学生能充分理解慈善的含义oil purification,就举了一个例子说中央空调:“如果一只 驴背着很重的东西上山,中国語鞭打,这时我上前加以阻拦,网络电话你说这 体现了一种什么样的美德?一个学生马上就回答:“兄弟般的情爱。“...2.我去17中学实习的时候,被分到初2教生物,我和学生讲各种生物都生活在不同 的环境中,上海翻译公司我问学生:录音电话“大家知道蜻蜓生活在什么样的环境中吗。电话录音“以学生答:“蚊子多 的地方。“我一想也对,电话录音卡就又问:那蚊子生活在什么样的环境中呢?录音系统“蜻蜓少的地方。“ 那学生没等我叫他就抢着回答。。电话录音系统 我当时差点晕过去。3.有此阅历史卷语音卡,有一道题目是:请写出我国任意一年的空军部队人数和飞机数。电话语音卡 又一学生的答案:呼叫中心1800年 空军人数0 飞机数0 我无奈的只能判对-_- 一卡通因为世界上第一 架飞机是1903年才诞生的。4.苏州网师园有一绝对,没有人能对出来,一卡通方案看看你们有没有能 对出来的:收费机风风雨雨,暖暖寒寒,处处寻寻觅觅。只听下面一学生不假思索的说售饭机:男男女女,漂漂亮亮,门禁机世世亲亲爱爱。。。老师当场 考勤机倒地。5.一日,重庆货运公司一位老师想启发学生什么叫“反哺“。就举例问道:你们的父母现在花很多钱替你们矫正牙重庆招聘网,将来父母亲老了餐饮加盟,你花钱给父母镶假牙,这种情况叫什么?一 学生答:以牙还牙。。6.有一报社公开征求:“南通州北通州南北通州通南北“的下联。一老师和学生说有搬家公司一句对得特好,机票就是:“东当铺西当铺东西当铺当东西“。此时一学生在下面叫板特价机票,男学生女学生男女学生生男女。。。。-_- 7.有次我带学生去春游机票,初中嘛,男女学生兴趣不同所以总是分开活动。成都特价机票一方面显示自己,一方面享受阳光。成都机票我不禁感叹道:成都飞机票我不记得我读初中的时候,女孩子有没有这么成熟。我无语。。。8.快毕业的时候,有不少学生忙着写毕业留言册北京特价机票。我班里有一差生没有毕业,要留级。 我怕他有太大心理负担,就在学生们让我写留言的时候特意看看他的留言。上海特价机票结 果我发现他在每本纪念册上写的都是:上海机票“我还有事,你们先走吧。“ 广州货运公司9.某日,我上课,一学生睡觉被我叫起来,他死活不承认自己睡觉了。。成都货运司我当时很生 气,就问他:你没睡觉干嘛把眼睛闭上? 广州特价机票学生回答广州货运公司:我在思考老师说的每一句。又问:广州机票那你干嘛总“点头“? 学生:上海货运公司因为我觉得您可讲的好啊。 我不甘心放过 他 就又问他:那你怎么留口水了?那学生理直气壮的回答:深圳特价机票老师,你的课讲的很有味道。。。 深圳机票我无话可说-_- 10.马上考试了,我怕班上一差生不及格,就问他:看得怎么样了? 那学生信心十 足 的回答:重庆特价机票我看完了! 结果考试成绩一出来,重庆机票他又不及格。我气愤的把他找来:你 不 是都看完了吗?怎么又不及格? 重庆打折机票那学生一脸无辜的说:货运公司老师,我说的是“北京货运公司我看,完 了!“。。
                                                                 2006-5-16 18:13:13

Posted by 游人(游客) | 个人主页 | 引用 | 返回 | 删除

Re:在Javascript中Eval函数的使用?


                                                                 2006-5-16 13:30:36

Posted by xsh(游客) | 个人主页 | 引用 | 返回 | 删除

Re:在Javascript中Eval函数的使用?

谢了~~


                                                                 2006-4-28 21:42:03

Posted by 长恨生 | 个人主页 | 引用 | 返回 | 删除

Re:在Javascript中Eval函数的使用?

These are 2 kind use of eval(), you just talked about "executes it as if it was script code". What about "evaluates a string"? Is that one just check the String?

 

Thanks


                                                                 2006-4-27 0:35:43

Posted by Jzhang(游客) | 个人主页 | 引用 | 返回 | 删除

Re:在Javascript中Eval函数的使用?

These are 2 kind use of eval(), you just talked about "executes it as if it was script code". What about "evaluates a string"? Is that one just check the String?

 

Thanks


                                                                 2006-4-27 0:34:53

Posted by Jzhang(游客) | 个人主页 | 引用 | 返回 | 删除

Re:在Javascript中Eval函数的使用?

What about "evaluates a string "?

 


                                                                 2006-4-27 0:31:22

Posted by Jzhang(游客) | 个人主页 | 引用 | 返回 | 删除

Re:在Javascript中Eval函数的使用?

There are 2 use of Eval(), you just talked about "executing it as if it was script code", what about another use "evaluates a string "? Is that just simplely check the String?

Thanks


                                                                 2006-4-27 0:30:11

Posted by Jzhang(游客) | 个人主页 | 引用 | 返回 | 删除

Re:在Javascript中Eval函数的使用?

getElementByName()不是也可以达到这种效果吗
                                                                 2006-4-24 15:20:43

Posted by sundigang(游客) | 个人主页 | 引用 | 返回 | 删除

Re:在Javascript中Eval函数的使用?

好文集
                                                                 2006-4-21 14:41:06

Posted by SSS(游客) | 个人主页 | 引用 | 返回 | 删除

Re:在Javascript中Eval函数的使用?

IT IS SO GOOD.

THANKS VERY MUCH.


                                                                 2006-4-18 12:23:39

Posted by adan(游客) | 个人主页 | 引用 | 返回 | 删除

Re:在Javascript中Eval函数的使用?

太谢了...讲的很清楚...

向所有学习者致敬...向你们学习...


                                                                 2006-4-18 5:07:16

Posted by gvolvop(游客) | 个人主页 | 引用 | 返回 | 删除

Re:在Javascript中Eval函数的使用?

 


                                                                 2006-4-12 12:07:37

Posted by yk(游客) | 个人主页 | 引用 | 返回 | 删除

Re:在Javascript中Eval函数的使用?

好文 顶一下先
                                                                 2006-3-22 16:53:46

Posted by 游客(游客) | 个人主页 | 引用 | 返回 | 删除

Re:在Javascript中Eval函数的使用?

总觉得eval() 和 execScript()两个函数的作用极为相似,不知各位高手见解如何?
                                                                 2006-3-11 8:57:25

Posted by 真的猛士(游客) | 个人主页 | 引用 | 返回 | 删除

Re:在Javascript中Eval函数的使用?

不错,真的是挺好的,继续努力
                                                                 2006-3-5 10:00:20

Posted by 月(游客) | 个人主页 | 引用 | 返回 | 删除

Re:在Javascript中Eval函数的使用?

谢啦!


                                                                 2006-3-3 15:03:48

Posted by 宝宝(游客) | 个人主页 | 引用 | 返回 | 删除

Re:在Javascript中Eval函数的使用?


                                                                 2006-3-3 3:31:11

Posted by qylgg(游客) | 个人主页 | 引用 | 返回 | 删除

Re:在Javascript中Eval函数的使用?

不错
                                                                 2006-3-3 0:25:55

Posted by cg(游客) | 个人主页 | 引用 | 返回 | 删除

Re:在Javascript中Eval函数的使用?

做B/S层次的开发,应该说离不开表现层的,不管是perl还是java都如此,因为用的好至少可以很多业务上的处理。越用JS或VBS感觉越明显!值得学习一下,有人说脚本简单,我不这样认为,结合DOM可以做到很多特别的效果!
                                                                 2006-3-1 12:07:22

Posted by jser(游客) | 个人主页 | 引用 | 返回 | 删除

Re:在Javascript中Eval函数的使用?

总体感觉javascript就是一个缩水版的perl,连eval都是perl的用法
                                                                 2006-3-1 10:01:10

Posted by duan(游客) | 个人主页 | 引用 | 返回 | 删除

Re:在Javascript中Eval函数的使用?

不懂!!
                                                                 2006-2-27 16:09:09

Posted by fay(游客) | 个人主页 | 引用 | 返回 | 删除

Re:在Javascript中Eval函数的使用?

看了真好:P谢谢辣!
                                                                 2006-2-24 16:30:58

Posted by 猫(游客) | 个人主页 | 引用 | 返回 | 删除

Re:在Javascript中Eval函数的使用?

是挺好的

 


                                                                 2006-2-14 10:00:10

Posted by 幽幽(游客) | 个人主页 | 引用 | 返回 | 删除

Re:在Javascript中Eval函数的使用?

不错!
                                                                 2005-12-15 22:52:44

Posted by kevin(游客) | 个人主页 | 引用 | 返回 | 删除

Re:在Javascript中Eval函数的使用?

good


                                                                 2005-12-10 10:07:11

Posted by ping(游客) | 个人主页 | 引用 | 返回 | 删除

..................................................
博客的精神于写自己某一刻的思想或心动!
..................................................
当然要是你愿意就是拿来做记事本也可以!
..................................................
群落博客将提供全程免费服务!免费注册!
..................................................
欢迎您成为群落博客的成员!使用之前请先看系统帮助>>>>系统帮助
..................................................

免费注册群落博客【点击完成注册】
..................................................

发表评论:

    昵称:
    密码: (游客无须输入密码)
    主页:
    标题: