eval()() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。
该方法只接受原始字符串作为参数,如果 string 参数不是原始字符串,那么该方法将不作任何改变地返回。因此不要为 eval() 函数传递 String 对象来作为参数。
如果试图覆盖 eval 属性或把 eval() 方法赋予另一个属性,并通过该属性调用它,则 ECMAScript 实现允许抛出一个 EvalError 异常。
<script type="text/javascript">eval("x=10y=20document.write(x*y)")
document.write(eval("2+2"))
var x=10
document.write(eval(x+17))
</script>
/*
输出结果:
200
4
27
*/
它的功能是把对应的字符串解析成JS代码并运行比如说你现在要运行一个可变的方法
function
name1(){……}
function
name2(){……}
var
m="name1"
eval(m+'()')//运行name1()
m='name2'
eval(m+'()')//运行name2()
eval说白了就是把一个字符串当程序语句来执行.比如:var strObjName = "aaa "
这里aaa是字符串,不是对象,跟 是完全不一样的,那么有时候传参数的时候传不了对象,你只能把字符串传过去,但是你又要引用这个对象,就只能
obj = eval( "document.all. "+strObjName)
一般来讲你可以先把string拚好了再eval.
如:
sCommand = "obj = document.all. "+aaa
那么sCommand = "obj = document.all.aaa "
用eval的效果就是sCommand去掉前后引号的效果
即:
eval( "obj=document.all.aaaa ") == obj = document.all.aaa