网站地图    收藏   

主页 > 前端 > javascript >

js eval函数使用方法介绍

来源:自学PHP网    时间:2014-09-19 14:47 作者: 阅读:

[导读] 我知道php中的eval函数可以把字符中的代码以php代码形式运行,后来百度知道了js中的eval函数它的功能是把对应的字符串解析成JS代码并运行比如说你现在要运行一个可变的方法eval(\"ale...

eval 方法

检查 JScript 代码并执行.

eval(codeString)

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

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

eval("var mydate = new Date();");
传递给 eval 方法的代码执行时的上下文和调用 eval 方法的一样

 代码如下 复制代码

function name1(){……}
function name2(){……}
var m="name1";
eval(m+'()');
//运行name1();
m='name2';
eval(m+'()');
//运行name2();

举个小例子:

 代码如下 复制代码
//执行表达式
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。

需要特别注意的是对象声明语法“{}”并不能返回一个值,需要用括号括起来才会返回值,简单示例如下:

 代码如下 复制代码

1.)str = "alert('hello,cssrain!')";
  eval(str);//会执行弹出操作

2.) var kc = "{name:'cssrain',email:'cssrain@gmail.com'}";
 eval("cssrain="+kc); //cssrain= "{name:'cssrain',email:'cssrain@gmail.com'}";
alert(cssrain)
 alert("name:"+cssrain.name);
 alert("email:"+cssrain.email);

3.)var the_unevaled_answer = "2 + 3"; //输出 2+3
var the_evaled_answer = eval("2 + 3"); //输出5
alert("没有eval = " + the_unevaled_answer + " 和 用了eval= " + the_evaled_answer);

例3

使用JS 中的eval函数,可以将JS字符串作为JS表达式进行执行。

将下列JS代码保存为1.js

 

 代码如下 复制代码
 function f(num,callback){                               
     //eval()函数,这个函数可以把一个字符串当作一个JavaScript表达式一样去执行它。                                      
     eval(callback+"('"+num +"')");
}

 

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

 代码如下 复制代码


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<script src="1.js" type="text/javascript"><script>
<title>无标题文档</title>
<script type="text/javascript">
function dosome(num){
    if(num) alert("未及格!");
    else
    if(num<=90) alert("该生成绩优良!");
       else alert("该生成绩优秀!");
}

function test(){
    var num = document.getElementById("score").value;
    f(num,"dosome");
}
</script>
</head>
<body>
<p>
eval示例:
</p>
请输入学生成绩
<input  type="text" id="score">
                                       
<input type="button" onClick="test()" value=" 看看结果">
                                       
</body>
</html>

然后打开test.html,可以看到我们调用了传过去的dosome()函数,使用eval函数必须保证字符串表示的JS表达式,在当前页面有效。

我们可以通过帧的方式来用eval执行任意可访问的帧的JS代码。也可以通过打开子窗体的方式,是父窗体和子窗体的JS代码能够相互调用,

而且我们只要传入函数名字符串(无论何种方式,不如通过url参数的方式),调用者无需知道调用的函数的名称,只要得到函数名字符串,即可调用,所以比较灵活。

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论