在JS中eval函数是什么意思

JavaScript025

在JS中eval函数是什么意思,第1张

它的功能是把对应的字符串解析成JS代码并运行

比如说你现在要运行一个可变的方法

function

name1(){……}

function

name2(){……}

var

m="name1"

eval(m+'()')//运行name1()

m='name2'

eval(m+'()')//运行name2()

JavaScript eval() 函数

JavaScript 全局对象

定义和用法:

eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。

语法:

eval(string)

返回值:

通过计算 string 得到的值(如果有的话)。

说明:

该方法只接受原始字符串作为参数,如果 string 参数不是原始字符串,那么该方法将不作任何改变地返回。因此请不要为 eval() 函数传递 String 对象来作为参数。

如果试图覆盖 eval 属性或把 eval() 方法赋予另一个属性,并通过该属性调用它,则 ECMAScript 实现允许抛出一个 EvalError 异常。

抛出:

如果参数中没有合法的表达式和语句,则抛出 SyntaxError 异常。

如果非法调用 eval(),则抛出 EvalError 异常。

如果传递给 eval() 的 Javascript 代码生成了一个异常,eval() 将把该异常传递给调用者。

扩展资料:

调用eval函数的三种情况:

1、直接调用

直接调用时,eval函数相关的执行环境属性ThisBinding,LexicalEnvironment,VariableEnvironment的值如下:

a) ThisBinding是调用eval函数时,调用方执行环境的ThisBinding

b) LexicalEnvironment是调用eval函数时,调用方执行环境的LexicalEnvironment

c) VariableEnvironemnt是调用eval函数时,调用方执行环境的VariableEnvironment

2、间接调用

所谓间接调用,即将eval赋值给另一个变量后在调用

3、严格模式下的eval

在严格模式下,eval的LexicalEnvironment,VariableEnvironment指向属于eval自己的Lexcial Environment,而不是调用方的Lexical Environment,但是ThisBinding还是调用方的ThisBinding。

同时,在严格模式下如果eval直接调用,那么eval的Lexical Environment的outer指针指向调用方的Lexical Environment,否则,如果是间接调用,那么eval的Lexical Environment的outer指针指向全局环境的Lexical Environment。

参考资料来源:百度百科--eval()

作用是把对应的字符串解析成js代码并运行。eval()()是程序语言中的函数,功能是获取返回值,不同语言大同小异,函数基础是返回值= eval(codeString),如果eval函数在执行时遇到错误,则抛出异常给调用者。

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

相关信息:

Eval函数在PHP代码中的用法:eval()函数把字符串按照PHP代码来计算。该字符串必须是合法的PHP代码,且必须以分号结尾。如果没有在代码字符串中调用返回语句,则返回NULL。如果代码中存在解析错误,则eval()函数返回false。

Eval函数在VBScript脚本语言中的使用:在VB脚本语言中,Eval函数具有两层英文,一是实现计算表达的值,即eval()函数可将字符串转换为代码执行,并返回一个或多个值;二是运行指定的代码。