此处a
和b
的输出相同,但在slice()的情况下,我们没有传递任何参数,因此a
,b
的输出,和c
必须相同。那么为什么c
的输出与此a
和b
不同?
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p id="1"></p>
<p id="2"></p>
<p id="3"></p>
<p id="4"></p>
<script>
var a=["a","b","c"];
var b=a;
var c=a.slice();
a.push("date");
document.getElementById("1").innerHTML=a;
document.getElementById("2").innerHTML=b;
document.getElementById("3").innerHTML=c;
document.getElementById("4").innerHTML=a;
</script>
</body>
</html>
ouptput:
a,b,c,date
a,b,c,date
a,b,c
a,b,c,date``
答案 0 :(得分:2)
答案 1 :(得分:0)
在推送新元素之前,您要对数组进行切片。 slice也返回一个新数组,因此“a”数组的引用不会影响你的“c”数组。
希望这会有所帮助...
答案 2 :(得分:0)
a.slice()
函数中的 slice
未声明任何值。所以不执行任何操作。并a.slice() != a
。因为在推入数组之前声明了c=a.slice()
。 Slice()
不会更改数组值。它会将数组值传递给c
数组。如果你需要啊日期,只需推送c
var a=["a","b","c"];
var b=a;
var c=a.slice();
a.push("date");
c.push('date')
document.getElementById("1").innerHTML=a;
document.getElementById("2").innerHTML=b;
document.getElementById("3").innerHTML=c;
document.getElementById("4").innerHTML=a;
<p id="1"></p>
<p id="2"></p>
<p id="3"></p>
<p id="4"></p>