Javascript 变量修复更改后的最后一个值
Javascript variable fix last value after changes
这是我的训练:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
document.getElementById("demo").innerHTML = fruits;
function myFunction() {
var fruits2 = fruits;
fruits2.reverse();
document.getElementById("demo").innerHTML = fruits+'<br>'+fruits2;
}
<p>Click the button to reverse only last array (fruits2).</p>
<button onclick="myFunction()">Try it</button>
<p id="demo"></p>
当我反转时 fruits2
我的第一个变量(水果)也会改变,
我只是不想这样!
我觉得一定很简单
fruits2 = fruits
表示 fruits2
现在是同一个对象 - 不是 fruits
的副本,而是与 fruits
.
相同的对象
这就像给你的朋友 Harry 起个绰号,比如 Maddog。当你打 Maddog 时,Harry 也会生气。他们不是两个独立的人,他们是一个人,有两种称呼他的方式。
如果你想把它们分开,你需要克隆你的阵列。复制数组最简单的方法是使用 slice
:
var fruits2 = fruits.slice()
那是因为你的fruits
和fruits2
是同一个数组。当你反转一个时,第二个也会反转。
您需要制作另一个阵列副本。一种简单的方法是
var fruits2 = JSON.parse(JSON.stringify(fruits));
或
var fruits2 = fruits.slice()
var fruits = ["Banana", "Orange", "Apple", "Mango"];
document.getElementById("demo").innerHTML = fruits;
function myFunction() {
var fruits2 = fruits.slice()
fruits2.reverse();
document.getElementById("demo").innerHTML = fruits+'<br>'+fruits2;
}
<p>Click the button to reverse only last array (fruits2).</p>
<button onclick="myFunction()">Try it</button>
<p id="demo"></p>
这是我的训练:
var fruits = ["Banana", "Orange", "Apple", "Mango"];
document.getElementById("demo").innerHTML = fruits;
function myFunction() {
var fruits2 = fruits;
fruits2.reverse();
document.getElementById("demo").innerHTML = fruits+'<br>'+fruits2;
}
<p>Click the button to reverse only last array (fruits2).</p>
<button onclick="myFunction()">Try it</button>
<p id="demo"></p>
当我反转时 fruits2
我的第一个变量(水果)也会改变,
我只是不想这样! 我觉得一定很简单
fruits2 = fruits
表示 fruits2
现在是同一个对象 - 不是 fruits
的副本,而是与 fruits
.
这就像给你的朋友 Harry 起个绰号,比如 Maddog。当你打 Maddog 时,Harry 也会生气。他们不是两个独立的人,他们是一个人,有两种称呼他的方式。
如果你想把它们分开,你需要克隆你的阵列。复制数组最简单的方法是使用 slice
:
var fruits2 = fruits.slice()
那是因为你的fruits
和fruits2
是同一个数组。当你反转一个时,第二个也会反转。
您需要制作另一个阵列副本。一种简单的方法是
var fruits2 = JSON.parse(JSON.stringify(fruits));
或
var fruits2 = fruits.slice()
var fruits = ["Banana", "Orange", "Apple", "Mango"];
document.getElementById("demo").innerHTML = fruits;
function myFunction() {
var fruits2 = fruits.slice()
fruits2.reverse();
document.getElementById("demo").innerHTML = fruits+'<br>'+fruits2;
}
<p>Click the button to reverse only last array (fruits2).</p>
<button onclick="myFunction()">Try it</button>
<p id="demo"></p>