比如说你现在要运行一个可变的方法
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()函数可将字符串转换为代码执行,并返回一个或多个值;二是运行指定的代码。