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学习笔记(十五) js间歇调用和超时调用
Jun 20 Javascript
在页面上用action传递参数到后台出现乱码的解决方法
Dec 31 Javascript
使用javascript实现简单的选项卡切换
Jan 09 Javascript
DOM 高级编程
May 06 Javascript
JS实现的通用表单验证插件完整实例
Aug 20 Javascript
快速学习jQuery插件 jquery.validate.js表单验证插件使用方法
Dec 01 Javascript
微信小程序  modal弹框组件详解
Oct 27 Javascript
深入探究AngularJs之$scope对象(作用域)
Jul 20 Javascript
Three.js如何实现雾化效果示例代码
Sep 27 Javascript
JS实现图片拖拽交换效果
Nov 30 Javascript
js实现倒计时器自定义时间和暂停
Feb 25 Javascript
Javascript如何递归遍历本地文件夹
Aug 06 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
PHP如何解决网站大流量与高并发的问题
2011/06/25 PHP
php判断上传的Excel文件中是否有图片及PHPExcel库认识
2013/01/11 PHP
ThinkPHP之N方法实例详解
2014/06/20 PHP
php的闭包(Closure)匿名函数详解
2015/02/22 PHP
自己的js工具_Form 封装
2009/08/21 Javascript
JavaScript 事件系统
2010/07/22 Javascript
js 操作符汇总
2014/11/08 Javascript
jQuery找出网页上最高元素的方法
2015/03/20 Javascript
jQuery属性选择器用法示例
2016/09/09 Javascript
前端必备插件之纯原生JS的瀑布流插件Macy.js
2017/11/22 Javascript
一种angular的方法级的缓存注解(装饰器)
2018/03/13 Javascript
jQuery表单元素过滤选择器用法实例分析
2019/02/20 jQuery
JS实现判断有效的数独算法示例
2019/02/25 Javascript
Vue实现类似Spring官网图片滑动效果方法
2019/03/01 Javascript
利用Bootstrap Multiselect实现下拉框多选功能
2019/04/08 Javascript
JS中async/await实现异步调用的方法
2019/08/28 Javascript
在vue中动态添加class类进行显示隐藏实例
2019/11/09 Javascript
vue.js实现简单的计算器功能
2020/02/22 Javascript
pycharm 使用心得(五)断点调试
2014/06/06 Python
python处理图片之PIL模块简单使用方法
2015/05/11 Python
Python三级菜单的实例
2017/09/13 Python
Python中的单继承与多继承实例分析
2018/05/10 Python
浅谈python中requests模块导入的问题
2018/05/18 Python
浅谈python下含中文字符串正则表达式的编码问题
2018/12/07 Python
在OpenCV里使用特征匹配和单映射变换的代码详解
2019/10/23 Python
pycharm 2019 最新激活方式(pycharm破解、激活)
2020/09/22 Python
Python基于unittest实现测试用例执行
2020/11/25 Python
Numpy中np.max的用法及np.maximum区别
2020/11/27 Python
国外平面设计素材网站:The Hungry JPEG
2017/03/28 全球购物
幼师自荐信范文
2013/10/06 职场文书
园林技术个人的自我评价
2014/01/08 职场文书
创建绿色社区汇报材料
2014/08/22 职场文书
简单的辞职信怎么写
2015/02/28 职场文书
本科毕业论文答辩稿
2015/06/23 职场文书
小学教师师德培训心得体会
2016/01/09 职场文书
Vue2项目中对百度地图的封装使用详解
2022/06/16 Vue.js