alert( eval(a) ); // 这会是多少?
567alert( eval(b) ); // 再来一个呢?
abceval(a),这句只是动态执行 eval(abc = "567"),跟a变量没有关系,所以这时a还是"abc"这个串,而eval(b),相当于eval(b = new String(a));由于这时a还是"abc",所以这句的运行结果就是"abc". 如果想要执行eval(a)时a的值也跟着变化,则这样 alert( a = eval(a) ); 即可
567alert( eval(b) ); // 再来一个呢?
abceval(a),这句只是动态执行 eval(abc = "567"),跟a变量没有关系,所以这时a还是"abc"这个串,而eval(b),相当于eval(b = new String(a));由于这时a还是"abc",所以这句的运行结果就是"abc". 如果想要执行eval(a)时a的值也跟着变化,则这样 alert( a = eval(a) ); 即可
解决方案 »
- JQuery 做下拉列表智能搜索 百度搜索差不多的
- 如何控制attachEvent和addEventListener中传给监听函数的参数
- MyEclipse 8.0 安装
- 把你要访问的网站的信息传给http://ctt1.ad2you.com/ipush.php这个网页...
- 跳转页时传递多个参数的问题!!!!
- 崩溃了,错误在哪里啊?求指教啊
- 不用表单,如何定时刷新本页面,并调用脚本文件?
- 如何写这个正则表达式?
- 一个新问题!!~~~
- 有办法得到一个对象的属性列表吗?比如<tr width='95%' height='20' ...>中width,height...
- 一个很牛的问题
- 向各位请教在javascript中,$这个符号的用法和作用
问题的根本应该在于JavaScript传参的时候,对于引用类型,只是复制了一份引用,并不改变实参的特征性状。其实我是希望两者都为"567"的,调试的时候可以看到,a 就是字符串"abc",监视窗口并不显示其各种各样的从原型得到的成员,而b跟a的不同就是显示了从原型得到的各种成员。
姑且这么理解:
a为值类型字符串,其值为"abc" //具有值类型变量的特征
b为引用型字符串,其值为"abc" //具有引用型变量的特征
eval在处理的时候,
对于a这种类型是取其值,即相当于eval( "abc" ),//取变量abc
对于b这种类型是取其引用,即相当于b;//取变量b如此说来,则Number,Boolean也应有类通之处,事实上,也确有。
还记得“TT是什么”那个题吗?new Boolean(false)跟这里的b就有相似之处。====
睡觉的时候思维才清晰,容易想通。
var a = "abc";
var b = new String(a);
//b = String(b); //如果加上这句话的话就得到你想要的效果了
var abc = "567";
alert( eval(a) ); // 而这里的eval执行了字符串
alert( eval(b) ); //这里的eval只是执行了对象,所以取对象里的内容。
</script>
alert(eval(b)) = alert(eval("a")) = alert(a)alert(eval("abc"))
alert(eval("a"))那个和这个不一样
上面是2个字符串相连,结果等于document.getELementById('aa').value后的结果
var a = "abc";
eval(a)就相当于eval("abc"),
eval("abc")后的结果是变量abc,
而变量abc的值是567
最后结果相当于alert(abc)
alert( eval(eval(b)) ) //看看这个
因为
var b = new String(a);
var b = "a";
eval前可是不一样的
只不过是eval后的结果是一样的。
eval后第一个还是对象只是把它的值拿出来了而已。
但是第二个则成了变量a把a的值拿出来了。
他们虽然结果是一样的。
但是操作的方式是不一样的。
另外。。
我想问个问题呢
谁能帮我解答下啊。。
msn:[email protected]
但是第二个则成了变量abc把abc的值拿出来了。
打错了。寒
不好意思。
var b = new String(a);
var abc = "567";
alert( eval(b) ); // 这会是多少?alert( eval(b) )的结果是abc,var b = new String(a);
var b = "a";结果是一样的
这个是567,因为a为字符串abc,eval之后就相当于eval("abc"),就改变为abc这个变量了b=new String(a);这个就好像.net讲 string实际也是一个引用类型一样,虽然value也是abc,但是实际新产生了一个对象,指向了不同的地址,所以alert( eval(b) )这个仍然是abc