1、eval(code)方法就像是一个完整的ECMAScript解析器,它只接受一个参数code,code可以是
javascript表达式
或待执行的ECMAScript(或javascript)
字符串
。(表达式就是一个没有分号的语句,字符串就是带有引号的语句)
2、eval("alert("ddd")");以及eval( alert("aaa"));都是有效的。
3、如果code包含一个表达式,则eval(code)对该表达式求值并返回这个值。
4、一些表达式(如看起来像语句的
对象和
函数直接量)在传入eval(code)是必须包含在圆括号中以消除多以性。比如eval('('+code+')');
5、如果eval中传入的参数不是字符串原始值,比如“ddd”,它会直接返回这个值,比如
alert(eval(prompt("aaaaaaaaaaaa","")));由于eval()得到的是prompt("aaaaaaaaaaaa","")这个函数,它所做的动作,而不会返回动作后得到的字串,因此这个语句会产生错误。
但是,如果
alert(eval(“prompt("aaaaaaaaaaaa","")”));就不会产生错误了
6、JSON经常会传入JSON字符串,如‘{”name1“:value1,”name2“,value2}’,然后被eval解析为javascript对象,此时,应该这样写eval(‘(' +
‘{”name1“:value1,”name2“,value2}’+')');