gpt4 book ai didi

javascript - 如何在 javascript 数组元素中显示正确的值?

转载 作者:行者123 更新时间:2023-11-30 08:27:01 25 4
gpt4 key购买 nike

在下面的代码中,我创建了一个汽车对象并通过增加计数来修改一个元素。每次我修改汽车时,我都会将其推送到一个名为 yada 的数组中。最后,我访问了放入 yada 数组的第 3 辆汽车以查看计数,但它报告计数为 6,而不是我预期的计数 3。

<html>
<body>
<script>

var car = {limit:4, count:0, trigger:0};
var yada = new Array();

for(var i=0; i<6; i++)
{
car.count += 1;
if(car.count >= car.limit)
{
car.trigger = 1;

}
yada.push(car);
alert(car.count+" "+car.limit+" "+car.trigger);
};

alert(yada[2].count + " TEST ");

</script>
</body>
</html>

最佳答案

了解按值传递和按引用传递之间的区别很重要:Is JavaScript a pass-by-reference or pass-by-value language? .

Javascript 的默认值总是按值传递,但对于对象来说,变量的值是一个引用。因此,当您传递一个对象并更改其成员时,这些更改会在函数之外持续存在。

您可以通过在 for 循环中创建一个新的汽车对象来进行调整:

<html>
<body>
<script>


var yada = new Array();

for(var i=0; i<6; i++)
{
let car = {limit:4, count:0, trigger:0};
car.count = i+1;
if(car.count >= car.limit)
{
car.trigger = 1;

}
yada.push(car);
alert(car.count+" "+car.limit+" "+car.trigger);
};

alert(yada[2].count + " TEST ");

</script>
</body>
</html>

因为您将 car 声明为局部变量,它不会在循环外持续存在,并且您可以在每次循环运行时创建一个新变量,然后可以将其存储在数组中。

这对我有用。

关于javascript - 如何在 javascript 数组元素中显示正确的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44011676/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com