js中eval函数用法详细
我们知道在php中eval函数是把一个很危险的转义函数,他可以把用户提交的php 脚本进行执行,那么js中eval函数作用是什么呢,下面我来给大家介绍。
定义和用法:
eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。
语法:
eval(string)参数 描述
string 必需。要计算的字符串,其中含有要计算的 JavaScript 表达式或要执行的语句。
返回值:
通过计算 string 得到的值(如果有的话)。
说明:
该方法只接受原始字符串作为参数,如果 string 参数不是原始字符串,那么该方法将不作任何改变地返回。因此请不要为 eval() 函数传递 String 对象来作为参数。
如果试图覆盖 eval 属性或把 eval() 方法赋予另一个属性,并通过该属性调用它,则 ECMAScript 实现允许抛出一个 EvalError 异常。
抛出:
如果参数中没有合法的表达式和语句,则抛出 SyntaxError 异常。
如果非法调用 eval(),则抛出 EvalError 异常。
如果传递给 eval() 的 Javascript 代码生成了一个异常,eval() 将把该异常传递给调用者。
提示和注释:
提示:虽然 eval() 的功能非常强大,但在实际使用中用到它的情况并不多
举个小例子:
- //执行表达式
- 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);
例,代码如下:
- <SCRIPT language="javascript">
- function showsubmenu(sid)
- {
- whichEl = eval("submenu" + sid);
- if (whichEl.style.display == "none")
- {
- eval("submenu" + sid + ".style.display="";");
- }//xiariboke.net
- else
- {
- eval("submenu" + sid + ".style.display="none";");
- }
- }
- </SCRIPT>
我们要做一个function(),功能是输入网页中两个个对象的名称,然后程序就将这两个对象的值联接起来输出,代码如下:
- function output(a,b)
- {
- var tmpa,tmpb;
- tmpa=document.all.a.value;
- tmpb=document.all.b.value;
- document.write(tmpa+tmpb);
- }
- output('input1','input2');
这样你执行的时候就会提示错误“document.all.a不是对象”以及“document.all.b不是对象”。原来javascript把a和b当成对象名称了,怎样能让javascript把a里面的值作为对象名称呢?这时候就要用eval了,把代码改成这样:
- function output(a,b)
- {
- var tmpa,tmpb;
- tmpa=eval("document.all."+a+".value");
- tmpb=eval("document.all."+b+".value");
- document.write(tmpa+tmpb);
- }
- output('input1','input2');
这样javascript就会先取出a,b的值,然后和前面的document.all.以及后面的.value组合运行,于是就可以顺利取出input1和input2的值.
个人对eval函数总结:
此处 expr 是一个被求值的字符串参数。如果该字符串是一个表达式,eval 求该表达式的值;如果该参数代表一个或多个 JavaScript 语句,那么 eval 执行这些语句。eval 函数可以用来把一个日期从一种格式(总是字符串)转换为数值表达式或数字