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初学
Dec 29 Javascript
深入理解JavaScript系列(40):设计模式之组合模式详解
Mar 04 Javascript
jQuery 3.0 的变化及使用方法
Feb 01 Javascript
修复jQuery tablesorter无法正确排序的bug(加千分位数字后)
Mar 30 Javascript
jQuery绑定事件on()与弹窗的简要概述
Apr 27 Javascript
BootStrap Table后台分页时前台删除最后一页所有数据refresh刷新后无数据问题
Dec 28 Javascript
使用BootStrap实现标签切换原理解析
Mar 14 Javascript
javascript九宫格图片随机打乱位置的实现方法
Mar 15 Javascript
React和Vue中监听变量变化的方法
Nov 14 Javascript
jQuery动态生成的元素绑定事件操作实例分析
May 04 jQuery
js 将线性数据转为树形的示例代码
May 28 Javascript
微信小程序实现拍照和相册选取图片
May 09 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检测数组长度函数sizeof与count用法
2014/11/17 PHP
PHP指定截取字符串中的中英文或数字字符的实例分享
2016/03/18 PHP
分享别人写的一个小型js框架
2007/08/13 Javascript
一个可绑定数据源的jQuery数据表格插件
2010/07/17 Javascript
JavaScript版DateAdd和DateDiff函数代码
2012/03/01 Javascript
jquery ajax跨域解决方法(json方式)
2014/02/04 Javascript
javascript实现炫酷的拖动分页
2015/05/11 Javascript
nodejs实现bigpipe异步加载页面方案
2016/01/26 NodeJs
Bootstrap选项卡动态切换效果
2016/11/28 Javascript
bootstrap为水平排列的表单和内联表单设置可选的图标
2017/02/15 Javascript
nodejs使用express创建一个简单web应用
2017/03/31 NodeJs
给Easyui-Datebox设置隐藏或者不可用的解决方法
2017/05/26 Javascript
vue.js获取数据库数据实例代码
2017/05/26 Javascript
使用vue的v-for生成table并给table加上序号的实例代码
2017/10/27 Javascript
9102年webpack4搭建vue项目的方法步骤
2019/02/20 Javascript
JavaScript:ES2019 的新特性(译)
2019/08/08 Javascript
微信小程序实现倒计时功能
2020/11/19 Javascript
9种python web 程序的部署方式小结
2014/06/30 Python
python脚本实现xls(xlsx)转成csv
2016/04/10 Python
Python实现注册登录系统
2017/08/08 Python
python中logging库的使用总结
2017/10/18 Python
Python *args和**kwargs用法实例解析
2020/03/02 Python
python3 sleep 延时秒 毫秒实例
2020/05/04 Python
win10从零安装配置pytorch全过程图文详解
2020/05/08 Python
Python+Selenium实现自动化的环境搭建的步骤(图文)
2020/09/01 Python
Python logging日志库空间不足问题解决
2020/09/14 Python
Maje德国官网:法国女性成衣品牌
2017/02/10 全球购物
阿根廷首家户外用品制造商和经销商:Montagne
2018/02/12 全球购物
Perfume’s Club德国官网:在线购买香水
2019/04/08 全球购物
业务经理的岗位职责
2013/11/16 职场文书
小学家长会邀请函
2014/01/23 职场文书
汽车广告策划方案
2014/05/31 职场文书
房屋产权共有协议书范本
2014/11/03 职场文书
2016年习总书记讲话学习心得体会
2016/01/20 职场文书
申论不会写怎么办?教您掌握这6点思维和原则
2019/07/17 职场文书
Nginx本地目录映射实现代码实例
2021/03/31 Servers