eval函数是什么意思(eval 函数)

http://www.itjxue.com  2023-01-28 05:20  来源:未知  点击次数: 

eval在python中的意思

eval是Python的一个内置函数,这个函数的作用是,返回传入字符串的表达式的结果。即变量赋值时,等号右边的表示是写成字符串的格式,返回值就是这个表达式的结果。

eval()函数用来执行一个字符串表达式,并返回表达式的值,还可以把字符串转化为list、tuple、dict。eval函数的语法:eval(expression[,globals[,locals]])。

扩展资料:

如果eval函数在执行时遇到错误,则抛出异常给调用者;类似的函数是loadcode,loadcode并不立即执行代码,而是返回一个函数对象。并且loadcode支持路径参数,eval并不支持,eval并不支持代码中的return语句,而是将代码作为表达式直接计算出结果。

例如:

var d = eval("({name:'chentong'})")

alert(d.name);

参考资料来源:

百度百科-eval()

eval()函数是什么意思?

计算一个表达式的值并返回结果。

[result

=

]Eval(expression)

参数

result

可选项。是一个变量,用于接受返回的结果。如果未指定结果,应考虑使用

Execute

语句代替。

expression

必选项。可以是包含任何有效

VBScript

表达式的字符串。

说明

VBScript

中,x

=

y

可以有两种解释。第一种方式是赋值语句,将

y

的值赋予

x。第二种解释是测试

x

y

是否相等。如果相等,result

True;否则

result

False。Eval

方法总是采用第二种解释,而

Execute

语句总是采用第一种。

注意

在Microsoft?

JScript?

中不存在这种比较与赋值的混淆,因为赋值运算符

(=)

与比较运算符

(==)

不同。

下面的例子说明了

Eval

函数的用法:

Sub

GuessANumber

Dim

Guess,

RndNum

RndNum

=

Int((100)

*

Rnd(1)

+

1)

Guess

=

CInt(InputBox("Enter

your

guess:",,0))

Do

If

Eval("Guess

=

RndNum")

Then

MsgBox

"祝贺你!猜对了!"

Exit

Sub

Else

Guess

=

CInt(InputBox("对不起,请再试一次",,0))

End

If

Loop

Until

Guess

=

End

Sub

eval 什么意思?

1. 和其他解释性语言一样,javascript 同样可以解释运行由javascript源代码组成的字符串,javascript 通过eval()来完成。

2. eval() 其实是一个函数,是javascript很早版本中就已经存在,但是javascript设计者和解释器对其进行了许多的限制,看起来eval更像一个运算符。但是作为用于动态执行代码,eval存在这样的问题,解释器无法对动态代码做进一步的优化。如果将它看做一个函数,那它是可以被赋予其他名字的:

var A = eval;

var B = A;

如果是这样的话,那么解释器就无法优化调用B()的函数了。因此设计者赋予eval一些运算符的特性(作为保留字)之后这些问题得到解决。当然它还有更多的限制,留待读者慢慢体会。

3. Eval 只有一个参数,如果传入的不是字符串的话,它直接返回这个参数;如果是字符串,那么首先会进行编译,如编译失败则爆出语法错误;编译成功则执行代码。更主要的是eval可以使用调用它的变量作用域环境,也就是说它查找的变量或者新增的变量作用域跟代码的完全一样。

如:

function A()

{

eval('var x ;');

eval("x=1"); //在一个函数中定义或者更改,那就是针对局部变量。

}

4. 全局eval

eval 可以动态执行代码,并申明或者改变变量,当然可以对全局变量进行上述操作。如

var globalEval = eval; //定义全局eval函数别名

var a ='global', b = 'global'; //全局变量

function c()

{

var a = 'local'; //局部变量

eval('a+="changed"'); //直接更改局部变量的值

return a; //返回更改后的局部变量

}

function d()

{

var b = 'local';

globalEval("b+='changed'");

return b;

}

console.log(c(), a); //localchanged global

console.log(d() , b) //local globalchanged

更强的是,全局的eval还可以更改局部变量的能力,不过这也是javascript优化的一个大问题。 当然在严格模式下,eval更像一个运算符,不可以用别名来覆盖eval。

(责任编辑:IT教学网)

更多

推荐安全产品文章