这个问题请先不要运行,想想自己认为的解答,再运行看效果,明白后请详解一下。 var a = "abc"; var b = new String(a); var abc = "567"; alert( eval(a) ); // 这会是多少? alert( eval(b) ); // 再来一个呢? 希望高手给个解释,我是偶然发现的,我花了两小时才发现是这里的问题,本来是1点睡的,结果搞到现在…… 哎~~~调的眼睛都乱跳了,睡觉先,明白看看大家的讨论。
<script type="text/javascript">
var a = "abc";
var b = new String(a);
//b = String(b); //如果加上这句话的话就得到你想要的效果了
var abc = "567";
alert( eval(a) ); // 而这里的eval执行了字符串
alert( eval(b) ); //这里的eval只是执行了对象,所以取对象里的内容。
</script>
LZ不明白的就是new啊
因为
var b = new String(a);
var b = "a";
eval前可是不一样的
只不过是eval后的结果是一样的。
eval后第一个还是对象只是把它的值拿出来了而已。
但是第二个则成了变量a把a的值拿出来了。
他们虽然结果是一样的。
但是操作的方式是不一样的。
另外。。
我想问个问题呢。。。
谁能帮我解答下啊。。
msn:muxrwc@hotmail.com
eval("document.getELementB"+"yId('aa').value")
上面是2个字符串相连,结果等于document.getELementById('aa').value后的结果
var a = "abc";
eval(a)就相当于eval("abc"),
eval("abc")后的结果是变量abc,
而变量abc的值是567
最后结果相当于alert(abc)