JavaScript中,数组存储单一变量,对象,数组时的区别


无意间看到JS的数组可以把对象,数组填充进一个新的数组中。然后便产生了一个疑问:填充进去的数组和对象的原值被改变时,填充进去的是否也会改变?


经测试发现:

数组中填充的为单一变量时,仅仅为赋值操作

数组中填充的为另一数组或者是一个对象时,对被填充的数组操作和对原数组或对象操作,结果都将会改变双方的值


测试代码如下~


<html>

<head>

<meta charset="utf-8" />
<title>Example </title>

</head>

<body>
<h1>Test!!!</h1>
<script>

///js数组可以存储变量的值
document.write("<p>本测试为测试出,在数组中存储的变量,当原变量的值改变时,数组中的值是否会改变~</p>");
var ktemp="one";///单一变量

function createObj(name,age){
    var obj=new Object();
    obj.name = name;
    obj.age = age;
    return obj;
}


var ktemp2=createObj("hh",20); //对象

var ktemp3=Array(3); //数组
ktemp3[0] = 0;
ktemp3[1] = 1;
ktemp3[2] = 2;



var ktt=Array();
ktt[0] = ktemp;
ktt[1] = ktemp2;
ktt[2] = ktemp3;


ktemp="two";
ktemp2.name = "HH";
ktemp3[0] = -1;

function show1(str1,str2){
    document.write("<p>" + str1 + ":" + str2 + "</p>");   
}


show1(ktt[0],ktemp);//单一变量
show1(ktt[1].name,ktemp2.name);//对象原值改变
show1(ktt[2][0],ktemp3[0]);//数组原值改变

ktt[0] = "three";
show1(ktt[0],ktemp);//单一变量

ktt[1].name="end!";
show1(ktt[1].name,ktemp2.name);///新数组中对象值改变

ktt[2][0] = 2;
show1(ktt[2][0],ktemp3[0]);///新数组中值改变

</script>
</body>

</html>


如有BUG,欢迎指出~

联系方式:[email protected] 

不胜感激~



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章