Ajax中的eval函数的用法

eval的定义和使用:

Eval它是用来计算某个字符串,并且执行其中的JavaScript代码。

语法:

1) eval函数接受一个string这个参数,并且这个参数是必须的,这个参数就是要计算的这个字符串。它里面可以函数含有JavaScript的表达式,或者要执行的语句。

eval(string)。

2) 那,这个既然是函数,就有可能有返回值。它的返回值是:如果这个string参数有返回值的话,那这个函数就原样返回这个string执行完毕的结果。

3) 有一个地方值得注意,这个eval函数只接受原始的字符串作为参数。如果string参数不是原始字符串,那该方法将不做任何改变的返回。因此,我们不要为这个函数传递一些string对象来作为参数。并且,如果我们试图覆盖eval这个属性,把eval函数赋值给另外一个属性,有可能会抛出一些异常。

4) 并且,如果这个参数中没有合法的表达式或者语句,有可能会抛出语法错误的异常。

可以看到,我们的eval函数,功能非常强大。所以,我们在实际应用中应该要更加注意它的合法性、合理性

实例:

eval("x=10;y=20;document.write(x*y)");

我在里面给它传递进入了一些执行语句。

1) 我先赋值x=10,然后y=20。

2) 然后我再给x和y做一个乘法。

再把它们的结果输出来。

那我们的eval函数会把这3条语句作为参数,用来执行。

输出200

看到了我们的x * y,也就是10 * 20,确实等于200。

这是我们的多条表达式语句。

2. 看另外一个例子:document.write(eval("2+2"));

1) 里面我们直接执行2+2,那么它执行的结果应该是4。

2) 那么这eval函数返回这个4给document.write的输出,那应该输出为4。

刷新浏览器,确实也得到了为4 的结果。

3. 再做一个简单的示例

1) 例如我定义一个这样的x变量。

var x = 10;

2) 然后我输出它在里面用变量做一个计算。

document.write(eval(x+7));

3) 我们看它是不是返回我们想要的结果,应该是返回17,

其实,它就是在这里x为10,10 加 7等于17,然后eval执行完只有返回17,由document.write打印在页面上。

这是我们在字符串下的eval函数的使用

在其它情况下的应用

它的返回结果是怎么样的?

1.辟如,这个:eval("2+3");

我们是直接传了一个2 + 3在里面,它应该会执行,执行完了之后它就会被返回5。

但是我们这里没有做任何的输出,所以我们应该是看不到这个效果的,它是它仍然是会正常执行的。

2. 那我们把这个eval函数赋值给这个变量

var myeval = eval;

这个有可能会抛出来异常,所以我们在实际项目中,不建议这么使用。虽然我们在有些浏览器里面可能不会抛出异常。

它是执行了下面的代码:

var x = 10;

document.write(eval(x+7));

eval("2+3");

var myeval = eval;

try {

alert("Result:" + eval(prompt("Enter an expression", "")));

} catch(e) {

alert(e);

}

2) 我们这个刷新,它并没有抛出异常,所以它在Chrome浏览器里面应该是可以正常执行的。

3) 我们看一下这段代码,这是用来检测这个eval参数是否合法的。

try {

alert("Result:" + eval(prompt("Enter an expression", "")));

} catch(e) {

alert(e);

}

a) 首先使用 try catch 包裹起来。

b) 然后执行了一个alert函数,alert函数里面是Result这个字符串 + eval函数的返回值。

c) eval里面执行了,弹出一个弹框,就是一个交互的对话框,供用户输入一个表达式。

然后作为执行结果再返回。

例如我输入2+3,那eval函数执行这个2+3之后,应该会返回5,返回5之后,跟Resul这个字符串相接,然后传递给alert函数,所以会弹出来一个5。

eval函数是如何解析JSON格式字符串的

1. 什么是Json格式的字符串呢?

Json是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器生成、解析。

2. 下面,我写一个json格式的字符串。

{“userid”:11,‘name’:‘sunliyuan’}

1) Json字符串外面是一个大括号。

2) 里面就是类似于我们的字典一样的。

3. 我们利用JavaScript内置的eval函数,将JSON格式的字符串转换成json对象时,我们怎么操作?

1) 我们需要用一个小括号,先将这个字符串包住。

2) 例如上面的这个字符串,我给它赋值一个txt这样的一个变量。

var txt={“userid”:11,‘name’:‘sunliyuan’}

  

赋值变量的时候,我们需要用括号给它括起来。

外面用双引号的时候,里面就要用单引号。

var txt = "{‘userid‘:11,‘name‘:‘liyi‘}";

  

3) 然后再解析,它会把这个字符串解析成json的对象。

然后通过我们的eval函数,在里面加一对小括号。

然后把这个字符串连接起来。

var txtObj = eval("("+txt+")");

  

4) 这个时候,我们就把解析之后的对象的userid做一次输出。

document.write(txtObj.userid);

刷新浏览器,它就将我们的json字符串解析成了一个json的对象。  输出11

通过这个对象的.,输出了它的一个属性。Userid为11。这就是我们想要的正确的结果。

我们的实例里面有3种实例情况。

1. 第一种是字符串上,我们直接输进去了执行语句。

它会返回正常的结果。

2. 第二种情况,我们把这个eval赋值给了一些属性,并且我们也在里面直接实现了一些表达式,还用来检测了这个eval的参数是否合法。

3. 然后,我们用eval来解析了这个json格式的字符串。

它解析json格式的字符串,就在原来的字符串左右两边加上小括号,它就会把我们的json字符串解析成为一个json对象。

然后我们通过对象的属性的访问形式,就可以取到里面的值。

 

时间: 2024-08-28 07:50:10

Ajax中的eval函数的用法的相关文章

C中的时间函数的用法

C中的时间函数的用法    这个类展示了C语言中的时间函数的常用的用法. 源代码: #include <ctime>#include <iostream> using namespace std; class MyTime{public:    MyTime() { mPTime = 0; mStLocalTime = 0; mStGMTTime = 0; }    ~MyTime() {}; //time_t time(time_t * timer) 返回自1970年1月1日00

JavaScript中字符串分割函数split用法实例

这篇文章主要介绍了JavaScript中字符串分割函数split用法,实例分析了javascript中split函数操作字符串的技巧,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了JavaScript中字符串分割函数split用法.分享给大家供大家参考.具体如下: 先来看下面这段代码: <script type="text/javascript"> var str="How are you doing today?" document.write

ajax中调用回调函数

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <a href="javascript:void(0);" id="send">test</a> </bo

SQL2005中row_number()等函数的用法

SQL2005中row_number()等函数的用法 今天刚装了SQL Server 2005,感觉还行,2005比2000新增了几个函数,分别是row_number().rank().dense_rank().ntile(),下面以实例分别简单讲解一下. create table gg(sname varchar(10),sort varchar(10),num int) go insert into gg select '白芍','根茎类',55 union all select '法半夏'

C语言中关于scanf函数的用法

scanf()函数的控制串 函数名: scanf 功 能: 执行格式化输入 用 法: int scanf(char *format[,argument,...]); scanf()函数是通用终端格式化输入函数,它从标准输入设备(键盘) 读取输入的信息.可以读入任何固有类型的数据并自动把数值变换成适当的机内格式. 其调用格式为: scanf("<格式化字符串>",<地址表>); scanf()函数返回成功赋值的数据项数,出错时则返回EOF. 其控制串由三类字符构成

JavaScript eval() 函数的用法

定义和用法 eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码. 返回值 通过计算 string 得到的值(如果有的话). 说明 该方法只接受原始字符串作为参数,如果 string 参数不是原始字符串,那么该方法将不作任何改变地返回.因此请不要为 eval() 函数传递 String 对象来作为参数. 如果试图覆盖 eval 属性或把 eval() 方法赋予另一个属性,并通过该属性调用它,则 ECMAScript 实现允许抛出一个 EvalError 异常. 抛出 如

JavaScript中的eval()函数详解

和其他很多解释性语言一样,JavaScript同样可以解释运行由JavaScript源代码组成的字符串,并产生一个值.JavaScript通过全局函数eval()来完成这个工作 eval(“1+2”),-> 3 动态判断源代码中的字符串是一种很强大的语言特性,几乎没有必要在实际中应用.如果你使用了eval(),你应当仔细考虑是否真的需要使用它. 一.eval()是一个函数还是一个运算符 eval()是一个函数,但由于它已经被当成运算符来对待了..JavaScript语言的早期版本定义了eval函

Java中的split函数的用法

Java中的 split  函数是用于按指定字符(串)或正则去分割某个字符串,结果以字符串数组形式返回: 例如: String str="[email protected]"; String[] a = str.split("@"); System.out.println("处理结果: "+a[0]+","+a[1]);   //输出的是: 处理结果: 1234,abc 对于分割的字符(串),通常是常见,普通的,没什么问题:

mysql中的group_concat函数的用法

1 本文通过实例介绍了MySQL中的group_concat函数的使用方法,比如select group_concat(name) . 2 MySQL中group_concat函数 3 完整的语法如下: 4 group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符']) 5 基本查询 6 mysql> select * from aa; 7 +------+------+ 8 | id| name | 9 +-