JS变量传值~~~~~~~~急

kx00450 2009-06-12 01:24:55





Array.prototype.remove=function(dx) {
alert(1111);
if(isNaN(dx)||dx>this.length){return false;}
for(var i=0,n=0;i<this.length;i++)
{
if(this[i]!=this[dx])
{
this[n++]=this[i]
}
}
this.length-=1
}

var sort_user = ["张三","李四","王五"];
var group = [1,2,3,1];
var proj = new Array(new Array(), new Array(), new Array(), new Array());
var tmpArray = new Array();
for (var i = 0; i < 4; i++) {
alert(sort_user);
tmpArray = sort_user;
for (var j = 0; j < group[i]; j++) {
var tmp = parseInt(Math.random() * tmpArray.length);
proj[i][j] = tmpArray[tmp];
alert(tmpArray[tmp]);
tmpArray.remove(tmp);
}
}



我把变量sort_user 的值,赋值给了tmpArray。然后改变tmpArray的值,怎么sort_user的值也被改变了
...全文
48 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
kx00450 2009-06-12
  • 打赏
  • 举报
回复
没给6楼分,不好意识
znbn_zlx 2009-06-12
  • 打赏
  • 举报
回复
javascript中的赋值有两种:
1、值拷贝;
2、引用拷贝;
对于简单数据类型,如number,string等的赋值都是值拷贝,而对于对象类型,如Array,自定义对象等的赋值都是引用拷贝,即只是拷贝了类似于C++中的指针,并不会将对象的所有值拷贝一份,所以如果有需要,数组赋值可以使用楼上的slice实现,自定义对象需要自己实现方法深层拷贝。
dh20156 2009-06-12
  • 打赏
  • 举报
回复
tmpArray = sort_user.slice(0);//值复制
caiying2009 2009-06-12
  • 打赏
  • 举报
回复
try:
tmpArray = sort_user;
===>
for (var k=0;k<sort_user.length;k++)tmpArray[k]=sort_user[k]
dh20156 2009-06-12
  • 打赏
  • 举报
回复
tmpArray = sort_user;//引用
caiying2009 2009-06-12
  • 打赏
  • 举报
回复
test

<script language="javascript">
<!--
var sort_user = ["张三","李四","王五"];
var tmpArray = new Array();
alert("[原 sort_user] "+sort_user);
tmpArray = sort_user;
tmpArray.length=1;
alert("[新 sort_user] "+sort_user);
//-->
</script>

kx00450 2009-06-12
  • 打赏
  • 举报
回复
进来接分

87,914

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧