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 相关文章推荐
基于JQuery的一句代码实现表格的简单筛选
Jul 26 Javascript
一个javascript图片阅览组件
Nov 09 Javascript
jquery设置元素的readonly和disabled的写法
Sep 22 Javascript
JavaScript输入邮箱自动提示实例代码
Jan 13 Javascript
详解微信小程序 页面跳转 传递参数
Dec 08 Javascript
详解webpack+gulp实现自动构建部署
Jun 29 Javascript
vue.js中v-on:textInput无法执行事件问题的解决过程
Jul 12 Javascript
Node.js命令行/批处理中如何更改Linux用户密码浅析
Jul 22 Javascript
Bootstrap 模态框自定义点击和关闭事件详解
Aug 10 Javascript
jQuery实现参数自定义的文字跑马灯效果
Aug 15 jQuery
Vue 实现从文件中获取文本信息的方法详解
Oct 16 Javascript
JS基础之逻辑结构与循环操作示例
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程序之die调试法 快速解决错误
2009/09/17 PHP
php 模拟get_headers函数的代码示例
2013/04/27 PHP
PHP中可以自动分割查询字符的Parse_str函数使用示例
2014/07/25 PHP
PHP原生函数一定好吗?
2014/12/08 PHP
php中删除数组的第一个元素和最后一个元素的函数
2015/03/07 PHP
JavaScript中的其他对象
2008/01/16 Javascript
js如何获取object类型里的键值
2014/02/18 Javascript
js在ie下打开对话窗口的方法小结
2016/10/24 Javascript
微信小程序登录态控制深入分析
2017/04/12 Javascript
JavaScript之promise_动力节点Java学院整理
2017/07/03 Javascript
js 奇葩技巧之隐藏代码
2017/08/11 Javascript
使用 electron 实现类似新版 QQ 的登录界面效果(阴影、背景动画、窗体3D翻转)
2018/10/23 Javascript
React Native中Mobx的使用方法详解
2018/12/04 Javascript
JS实现点星星消除小游戏
2020/03/24 Javascript
JavaScript实现点击切换验证码及校验
2021/01/10 Javascript
基于进程内通讯的python聊天室实现方法
2015/06/28 Python
实例讲解Python的函数闭包使用中应注意的问题
2016/06/20 Python
python3.6连接MySQL和表的创建与删除实例代码
2017/12/28 Python
Python 字符串换行的多种方式
2018/09/06 Python
对pandas中时间窗函数rolling的使用详解
2018/11/28 Python
在pycharm上mongodb配置及可视化设置方法
2018/11/30 Python
python消费kafka数据批量插入到es的方法
2018/12/27 Python
OpenCV+Python识别车牌和字符分割的实现
2019/01/31 Python
Python OpenCV 使用滑动条来调整函数参数的方法
2019/07/08 Python
Python新手如何理解循环加载模块
2020/05/29 Python
Python通过队列来实现进程间通信的示例
2020/10/14 Python
写给女朋友的道歉信
2014/01/08 职场文书
铁路工务反思材料
2014/02/07 职场文书
生产厂长岗位职责
2014/02/21 职场文书
竞聘书模板
2014/03/31 职场文书
2014年银行员工年终自我评价
2014/09/19 职场文书
钱塘江大潮导游词
2015/02/03 职场文书
社区母亲节活动总结
2015/02/10 职场文书
话题作文之呼唤
2019/12/18 职场文书
叶县这家生产军用电台的兵工厂,人称“四机部”,走出一上将
2022/02/18 无线电
python通过新建环境安装tfx的问题
2022/05/20 Python