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 写的简单进度条控件
Jan 22 Javascript
Mootools 1.2教程 输入过滤第一部分(数字)
Sep 15 Javascript
12种不宜使用的Javascript语法整理
Nov 04 Javascript
jquery中event对象属性与方法小结
Dec 18 Javascript
ExtJS中设置下拉列表框不可编辑的方法
May 07 Javascript
JQuery中使用.each()遍历元素学习笔记
Nov 08 Javascript
简介JavaScript中的getSeconds()方法的使用
Jun 10 Javascript
JS获取CSS样式(style/getComputedStyle/currentStyle)
Jan 19 Javascript
jQuery prototype冲突的2种解决方法(附demo示例下载)
Jan 21 Javascript
实现高性能javascript的注意事项
May 27 Javascript
微信公众号生成新浪短网址的实现(快速生成)
Aug 18 Javascript
微信小程序canvas实现签名功能
Jan 19 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的pcntl多进程用法实例
2015/03/19 PHP
PHP永久登录、记住我功能实现方法和安全做法
2015/04/27 PHP
PHP中spl_autoload_register()函数用法实例详解
2016/07/18 PHP
php封装的表单验证类完整实例
2016/10/19 PHP
javascript完美拖拽的实现方法
2013/09/29 Javascript
js解决select下拉选不中问题
2014/10/14 Javascript
JavaScript字符串对象toLowerCase方法入门实例(用于把字母转换为小写)
2014/10/17 Javascript
JavaScript中的this到底是什么(一)
2015/12/09 Javascript
AngularJs ng-route路由详解及实例代码
2016/09/14 Javascript
js封装tab标签页实例分享
2016/12/19 Javascript
一个例子轻松学会Vue.js
2017/01/02 Javascript
ajax的分页查询示例(不刷新页面)
2017/01/11 Javascript
jQuery Ajax前后端使用JSON进行交互示例
2017/03/17 Javascript
Angular directive递归实现目录树结构代码实例
2017/05/05 Javascript
JavaScript之underscore_动力节点Java学院整理
2017/07/03 Javascript
浅谈Vue下使用百度地图的简易方法
2018/03/23 Javascript
vue.js绑定事件监听器示例【基于v-on事件绑定】
2018/07/07 Javascript
jQuery实现购物车全功能
2021/01/11 jQuery
详解Python中最难理解的点-装饰器
2017/04/03 Python
Python数据结构与算法之链表定义与用法实例详解【单链表、循环链表】
2017/09/28 Python
django中的setting最佳配置小结
2017/11/21 Python
linux安装Python3.4.2的操作方法
2018/09/28 Python
Python 从相对路径下import的方法
2018/12/04 Python
PyQt5 在label显示的图片中绘制矩形的方法
2019/06/17 Python
在macOS上搭建python环境的实现方法
2019/08/13 Python
Python中 CSV格式清洗与转换的实例代码
2019/08/29 Python
python 工具 字符串转numpy浮点数组的实现
2020/03/14 Python
详解python中的异常和文件读写
2021/01/03 Python
对pytorch中x = x.view(x.size(0), -1) 的理解说明
2021/03/03 Python
BannerBuzz加拿大:在线定制横幅印刷、广告和标志
2020/03/10 全球购物
面向对象设计的原则是什么
2013/02/13 面试题
自荐信包含哪些内容
2013/10/30 职场文书
安全生产目标责任书
2014/04/14 职场文书
学校献爱心活动总结
2014/07/08 职场文书
小学运动会开幕词
2015/01/28 职场文书
Python帮你解决手机qq微信内存占用太多问题
2022/02/15 Python