A-A+

js中eval函数用法详细

2016年10月16日 前端设计 暂无评论 阅读 5 views 次

我们知道在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() 的功能非常强大,但在实际使用中用到它的情况并不多

举个小例子:

  1. //执行表达式  
  2. var the_unevaled_answer = "2 + 3";   
  3. var the_evaled_answer = eval("2 + 3");   
  4. alert("the un-evaled answer is " + the_unevaled_answer + " and the evaled answer is " + the_evaled_answer);  

例,代码如下:

  1. <SCRIPT language="javascript">  
  2. function showsubmenu(sid)  
  3. {  
  4. whichEl = eval("submenu" + sid);  
  5. if (whichEl.style.display == "none")  
  6. {  
  7. eval("submenu" + sid + ".style.display="";");  
  8. }//xiariboke.net  
  9. else  
  10. {  
  11. eval("submenu" + sid + ".style.display="none";");  
  12. }  
  13. }  
  14. </SCRIPT>  

我们要做一个function(),功能是输入网页中两个个对象的名称,然后程序就将这两个对象的值联接起来输出,代码如下:

  1. function output(a,b)   
  2.             {   
  3.                var tmpa,tmpb;   
  4.                tmpa=document.all.a.value;   
  5.                tmpb=document.all.b.value;   
  6.                document.write(tmpa+tmpb);   
  7.             }   
  8.             output('input1','input2');  

这样你执行的时候就会提示错误“document.all.a不是对象”以及“document.all.b不是对象”。原来javascript把a和b当成对象名称了,怎样能让javascript把a里面的值作为对象名称呢?这时候就要用eval了,把代码改成这样:

  1. function output(a,b)   
  2. {   
  3. var tmpa,tmpb;   
  4. tmpa=eval("document.all."+a+".value");   
  5. tmpb=eval("document.all."+b+".value");   
  6. document.write(tmpa+tmpb);   
  7. }   
  8. output('input1','input2');   

这样javascript就会先取出a,b的值,然后和前面的document.all.以及后面的.value组合运行,于是就可以顺利取出input1和input2的值.

个人对eval函数总结:

此处 expr 是一个被求值的字符串参数。如果该字符串是一个表达式,eval 求该表达式的值;如果该参数代表一个或多个 JavaScript 语句,那么 eval 执行这些语句。eval 函数可以用来把一个日期从一种格式(总是字符串)转换为数值表达式或数字

标签:

给我留言