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 相关文章推荐
文本链接逐个出现的js脚本
Dec 12 Javascript
JavaScript 闭包在封装函数时的简单分析
Nov 28 Javascript
关于jQuery参考实例 1.0 jQuery的哲学
Apr 07 Javascript
在JavaScript里嵌入大量字符串常量的实现方法
Jul 07 Javascript
Lua表达式和控制结构学习笔记
Dec 15 Javascript
jquery滚动特效集锦
Jun 03 Javascript
基于jQuery通过jQuery.form.js插件实现异步上传
Dec 13 Javascript
Document.body.scrollTop的值总为零的快速解决办法
Jun 09 Javascript
JavaScript中localStorage对象存储方式实例分析
Jan 12 Javascript
JavaScript数组去重的多种方法(四种)
Sep 19 Javascript
vue路由--网站导航功能详解
Mar 29 Javascript
全网小程序接口请求封装实例代码
Nov 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设计模式 Factory(工厂模式)
2011/06/26 PHP
关于php连接mssql:pdo odbc sql server
2011/07/20 PHP
laravel dingo API返回自定义错误信息的实例
2019/09/29 PHP
解决 FireFox 下[使用event很麻烦] 的问题.
2006/08/22 Javascript
jQuery 1.5最新版本的改进细节分析
2011/01/19 Javascript
有关javascript的性能优化 (repaint和reflow)
2013/04/12 Javascript
jQuery Trim去除字符串首尾空字符的实现方法说明
2014/02/11 Javascript
js和jquery分别验证单选框、复选框、下拉框
2015/12/17 Javascript
浅析Javascript中bind()方法的使用与实现
2016/05/30 Javascript
JS解决iframe之间通信和自适应高度的问题
2016/08/24 Javascript
js+css3制作时钟特效
2016/10/16 Javascript
jQuery中ztree 点击文本框弹出下拉框的实例代码
2017/02/05 Javascript
Vue唯一可以更改vuex实例中state数据状态的属性对象Mutation的讲解
2019/01/18 Javascript
vue项目中使用scss的方法步骤
2019/05/16 Javascript
element-ui 本地化使用教程详解
2019/10/28 Javascript
JavaScript实现Excel表格效果
2020/02/07 Javascript
js实现点赞效果
2020/03/16 Javascript
js实现小时钟效果
2020/03/25 Javascript
Python实现简单的代理服务器
2015/07/25 Python
Python使用Paramiko模块编写脚本进行远程服务器操作
2016/05/05 Python
Python3.4编程实现简单抓取爬虫功能示例
2017/09/14 Python
python版学生管理系统
2018/01/10 Python
Python如何抓取天猫商品详细信息及交易记录
2018/02/23 Python
Python3.5实现的罗马数字转换成整数功能示例
2019/02/25 Python
安装好Pycharm后如何配置Python解释器简易教程
2019/06/28 Python
python爬虫爬取幽默笑话网站
2019/10/24 Python
Python 序列化和反序列化库 MarshMallow 的用法实例代码
2020/02/25 Python
python+excel接口自动化获取token并作为请求参数进行传参操作
2020/11/10 Python
html5指南-7.geolocation结合google maps开发一个小的应用
2013/01/07 HTML / CSS
html5的input的required使用中遇到的问题及解决方法
2018/04/24 HTML / CSS
video实现有声音自动播放的实现方法
2020/05/20 HTML / CSS
Farfetch中文官网:奢侈品牌时尚购物平台
2020/03/15 全球购物
爸爸的花儿落了教学反思
2014/02/20 职场文书
群众路线教育实践活动方案
2014/10/31 职场文书
GoLang中生成UUID唯一标识的实现
2021/05/08 Golang
Java使用jmeter进行压力测试
2021/07/09 Java/Android