如何优化js里的eval

JavaScript06

如何优化js里的eval,第1张

//eval就是计算字符串【可以放任何js代码】里的值

//1、

var str1='12+3'

eval(str1)//15

//2、

var str2='[1,2,3]'

eval(str2[0])//1

//3、

eval('alert("abc")')//弹出abc

//4、

var str="function show(){alert('love you')}"

eval(str)

show()

//5、eval--->json字符串

1、如果对如上用户名,邮箱验证输入验空,传统的做法

复制代码 代码如下:

var flag = true

if (document.getElementById("txtName").value == "") {

//写入错误信息

flag = false

}

if (document.getElementById("txtEmail").value == "") {

//写入错误信息

flag = false

}

return flag

}

-->但是如何有很多需要验证的字段,if会有很多,而且一点都不雅观

开始我猜测第一个eval作用等同于getElementById,即通过一个id名获取DOM对象

于是我写了个测试方法,代码如下

<div id="left" onclick="ev('left')">haha</div>

<script type="text/javascript">

function ev(str){

alert(eval(str).innerHTML)

}

</script>

语句意思是点击对象,弹出含有id为left的对象的内部源码,经测试,结果正确.

推论,eval不但可以执行js语句,也可以用作获取对象的方法,他是否只能用作通过id获取对象我没做测试.期待你自行挖掘.

这样,对于你的源码就很好解释了,left_n就是获取的对象,left_n.style.display控制对象的显示与隐藏.

你写的这段代码用eval是多此一举。

但是,如果ele_hide = document.getElementById('con_" + name + "_" + i +"')

是未知的呢?

比如:

var b ="我信了"

var s = "ele_hide = document.getElementById('con_" + name + "_" + i +"')"

if(b=="我反正信了")

{

s="alert('这是个奇迹!')"

}

eval(s)

这个例子的话,eval(s)的结果就不可测了。

所以,这样可以让JS功能更灵活

也不是说什么地方都要用eval的。