A-A+

js eval函数使用方法介绍

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

我知道php中的eval函数可以把字符中的代码以php代码形式运行,后来百度知道了js中的eval函数它的功能是把对应的字符串解析成JS代码并运行比如说你现在要运行一个可变的方法eval(\"alert(\'abc\')\");//运行alert函数eval 方法检查 JScript 代码并执行.

eval(codeString)

必选项 codestring 参数是包含有效 JScript 代码的字符串值。这个字符串将由 JScript 分析器进行分析和执行。

说明:eval 函数允许 JScript 源代码的动态执行。例如,下面的代码创建了一个包含 Date 对象的新变量 mydate :

eval("var mydate = new Date();");

传递给 eval 方法的代码执行时的上下文和调用 eval 方法的一样,例,代码如下:

  1. function name1(){……}  
  2. function name2(){……}  
  3. var m="name1";  
  4. eval(m+'()');  
  5. //运行name1();  
  6. m='name2';  
  7. eval(m+'()');  
  8. //运行name2();  

举个小例子:

  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);  

如果你运行这段eval程序, 你将会看到在JavaScript里字符串"2 + 3"实际上被执行了。

所以当你把the_evaled_answer的值设成 eval("2 + 3")时, JavaScript将会明白并把2和3的和返回给the_evaled_answer。
需要特别注意的是对象声明语法“{}”并不能返回一个值,需要用括号括起来才会返回值,简单示例如下:

  1. 1.)str = "alert('hello,cssrain!')";  
  2. eval(str);//会执行弹出操作  
  3. 2.) var kc = "{name:'cssrain',email:'cssrain@gmail.com'}";  
  4. eval("cssrain="+kc); //cssrain= "{name:'cssrain',email:'cssrain@gmail.com'}";  
  5. alert(cssrain)  
  6. alert("name:"+cssrain.name);  
  7. alert("email:"+cssrain.email);  
  8. 3.)var the_unevaled_answer = "2 + 3"//输出 2+3  
  9. var the_evaled_answer = eval("2 + 3"); //输出5  
  10. alert("没有eval = " + the_unevaled_answer + " 和 用了eval= " + the_evaled_answer);  

例3,使用JS 中的eval函数,可以将JS字符串作为JS表达式进行执行,将下列JS代码保存为1.js,代码如下:

  1. function f(num,callback){  
  2. //eval()函数,这个函数可以把一个字符串当作一个JavaScript表达式一样去执行它。  
  3. eval(callback+"('"+num +"')");  
  4. }//xiariboke.net  

再定义一个test.html,保存到和1.js相同的目录,代码如下:

  1. <script src="1.js" type="text/javascript">// <![CDATA[  
  2. <script>  
  3. <title>无标题文档</title>  
  4. <script type="text/javascript">  
  5. function dosome(num){  
  6.     if(num) alert("未及格!");   
  7.     else  
  8.     if(num<=90) alert("该生成绩优良!");  
  9.        else alert("该生成绩优秀!");   
  10. }  
  11. function test(){   
  12.     var num = document.getElementById("score").value;   
  13.     f(num,"dosome");  
  14. }   
  15. // ]]></script>  

eval示例:请输入学生成绩

  1. <input id="score" type="text" />  
  2. <input type="button" value=" 看看结果" />  

然后打开test.html,可以看到我们调用了传过去的dosome()函数,使用eval函数必须保证字符串表示的JS表达式,在当前页面有效。
我们可以通过帧的方式来用eval执行任意可访问的帧的JS代码。也可以通过打开子窗体的方式,是父窗体和子窗体的JS代码能够相互调用,而且我们只要传入函数名字符串(无论何种方式,不如通过url参数的方式),调用者无需知道调用的函数的名称,只要得到函数名字符串,即可调用,所以比较灵活。

标签:

给我留言