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 相关文章推荐
Javascript 中的 && 和 || 使用小结
Apr 25 Javascript
JavaScript获取页面上某个元素的代码
Mar 13 Javascript
由简入繁实现Jquery树状结构的方法(推荐)
Jun 10 Javascript
jQuery使用each方法与for语句遍历数组示例
Jun 16 Javascript
JS实现兼容各种浏览器的高级拖动方法完整实例【测试可用】
Jun 21 Javascript
Angular在一个页面中使用两个ng-app的方法
Feb 20 Javascript
js 公式编辑器 - 自定义匹配规则 - 带提示下拉框 - 动态获取光标像素坐标
Jan 04 Javascript
全面解析vue router 基本使用(动态路由,嵌套路由)
Sep 02 Javascript
用vue-cli开发vue时的代理设置方法
Sep 20 Javascript
JavaScript中工厂函数与构造函数示例详解
May 06 Javascript
基于ssm框架实现layui分页效果
Jul 27 Javascript
浅谈JavaScript中你可能不知道URL构造函数的属性
Jul 13 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
javascript 小型动画组件与实现代码
2010/06/02 PHP
openflashchart 2.0 简单案例php版
2012/05/21 PHP
jQuery+php实现ajax文件即时上传的详解
2013/06/17 PHP
php网站判断用户是否是手机访问的方法
2013/11/01 PHP
php程序总是提示验证码输入有误解决方案
2015/01/07 PHP
迪菲-赫尔曼密钥交换(Diffie?Hellman)算法原理和PHP实现版
2015/05/12 PHP
基于php实现随机合并数组并排序(原排序)
2015/11/26 PHP
CI框架的安全性分析
2016/05/18 PHP
php array_key_exists() 与 isset() 的区别
2016/10/24 PHP
javascript html 静态页面传参数
2009/04/10 Javascript
一段批量给页面上的控件赋值js
2010/06/19 Javascript
js中的string.format函数代码
2020/08/11 Javascript
web基于浏览器的本地存储方法应用
2012/11/27 Javascript
Jquery通过Ajax访问XML数据的小例子
2013/11/18 Javascript
利用Keydown事件阻止用户输入实现代码
2014/03/11 Javascript
javascript 使用for循环时该注意的问题-附问题总结
2015/08/19 Javascript
原生javascript+css3编写的3D魔方动画旋扭特效
2016/03/14 Javascript
jquery实现全选和全不选功能效果的实现代码【推荐】
2016/05/05 Javascript
快速解决Canvas.toDataURL 图片跨域的问题
2016/05/10 Javascript
JS锚点的设置与使用方法
2016/09/05 Javascript
JS在浏览器中解析Base64编码图像
2017/02/09 Javascript
webpack+vue-cil中proxyTable处理跨域的方法
2018/07/20 Javascript
使用electron将vue-cli项目打包成exe的方法
2018/09/29 Javascript
[00:17]天涯墨客一技能展示
2018/08/25 DOTA
Python Subprocess模块原理及实例
2019/08/26 Python
使用Python爬虫库requests发送请求、传递URL参数、定制headers
2020/01/25 Python
Python不支持 i ++ 语法的原因解析
2020/07/22 Python
用python进行视频剪辑
2020/11/02 Python
使用CSS3实现SVG路径描边动画效果入门教程
2019/10/21 HTML / CSS
CHARLES & KEITH台湾官网:新加坡时尚品牌
2019/07/30 全球购物
学校四风问题对照检查材料思想汇报
2014/09/26 职场文书
少先队中队工作总结
2015/08/14 职场文书
2016年大学生暑期社会实践活动总结
2016/04/06 职场文书
css3实现背景图片半透明内容不透明的方法示例
2021/04/13 HTML / CSS
浅谈自定义校验注解ConstraintValidator
2021/06/30 Java/Android
CSS实现鼠标悬浮动画特效
2023/05/07 HTML / CSS