Posted on 2010-03-09 23:24
断点 阅读(707)
评论(0) 编辑 收藏 所属分类:
JScript
Eval 是Javascript 中一个非常有用而奇特的预定义函数,它的概念和作用也像C 语言中的指针一样较难理解,因而在实际应用中常常不能运用得当。函数Eval的功能是把一个字符串参数转换成Javascript的代码,这个被转换的代码可以是一个变量名,也可以是一个算术表达式,甚至是一个函数表达式。如i = eval("name1")是把名为name1 的变量赋值给变量i;i=eval("3+2")是把表达式3+2 的值5 赋给变量i ; i = eval("funname(n)")是把函数funname(n)返回值传给变量i。这时,你也许要问了,这不是多此一举吗?直接写成i=name1;i=3+2;i=funname(n)不就行了吗?是的,如果我们仅仅把字符串值当作参数,是一点作用都不起。但如果我们把字符串变量作为参数,Eval 的作用就大了。如i=eval(str)(其中,str 是字符串变量),str 作为一个变量,其值可以动态地发生变更,从而使i = eval(str)产生不同的结果。这时str是不是像C语言的指针?它“指”向name1(即str 的值是"name1" 字串),i得到的是变量name1 的值。它“指”向一个函数名,就调用该函数并返回值给i(但该函数必须事先定义好,Javascript 引擎要找得到才行)。此外,它比“指针”更有用的是,还可解析执行动态生成的运算表达式。
下面通过一个Web仿真计算器实例来描述它的这个作用。这是一个基于Web的计算器仿真程序。用户可以像操作一个现实世界中的计算器一样,通过单击按钮输入数据和运算符号,当输入等号后在文本框中得到最终结果。它的原理很简单,就是记录用户输入的运算式字串,然后用Eval 函数把该字串转成运算式交给Javascript 执行即可。先手动建立一个简单的HTML 文件,只要<html>、head>和<body>元素即可。接着在<body></body>间插入以下html 代码,设置好该程序界面。
<input type="text" name=textdisp value="" ><br>
<input type="button" name=leftk value="(" onclick="yunsuan(value)">
<input type="button" name=rightk value=")" onclick="yunsuan(value)">
<input type="button" name=op1 value="1" onclick="yunsuan(value)">
<input type="button" name=op2 value="2" onclick="yunsuan(value)">
<input type="button" name=op3 value="3" onclick="yunsuan(value)">
<input type="button" name=op4 value="4" onclick="yunsuan(value)">
<br><p>
<input type="button" name=op5 value="5" onclick="yunsuan(value)">
<input type="button" name=op6 value="6" onclick="yunsuan(value)">
<input type="button" name=op7 value="7" onclick="yunsuan(value)">
<input type="button" name=op8 value="8" onclick="yunsuan(value)">
<input type="button" name=op9 value="9" onclick="yunsuan(value)">
<input type="button" name=op0 value="0" onclick="yunsuan(value)">
<br><p>
<input type="button" name=oppoint value="." onclick="yunsuan(value)">
<input type="button" name=opadd value="+" onclick="yunsuan(value)">
<input type="button" name=opsub value="-" onclick="yunsuan(value)">
<input type="button" name=opmul value="*" onclick="yunsuan(value)">
<input type="button" name=opdiv value="/" onclick="yunsuan(value)">
<input type="button" name=opeql value="=" onclick="yunsuan(value)">
<br><p>
<input type="button" name=cle value="restar" onclick="res()">
现在用IE6 打开它,就会得到如图所示的效果。再接再厉,现在在<head></head>中输入以下Javascript
代码:
<TITLE>test</TITLE>
<script language="javascript">
var expstring="";
var numstring="";
function yunsuan(btn){
if(btn=="=")
textdisp.value=eval(expstring);
else
{if(((btn>="0")&&(btn<="9"))||(btn=="."))
{numstring=numstring+btn;
textdisp.value=numstring;
}
else
numstring="";
expstring=expstring+btn;
}
}
function res(){
expstring="";
textdisp.value="";
numstring="";
}
</script>
这样,我们利用Eval 函数,仅仅十几行代码就做好了这个计算器。
转载:http://school.cfan.com.cn/pro/pother/2006-08-28/1156732532d14455.shtml