gpt4 book ai didi

javascript - 如何通过引用传递变量?

转载 作者:行者123 更新时间:2023-11-28 12:58:56 24 4
gpt4 key购买 nike

在其他编程语言中,我们使用 & 关键字通过引用传递变量。

例如,在 php 中;

$a = 10;

function something(&$a){
$a = 7;
};

something($a);

echo $a;
// 7

我们如何在 JavaScript 中做到这一点?

当用户单击向右或向左箭头时,我试图获取下一个或上一个。按数组索引显示图像;

list: function (index) {
let items = this.images;
return {
next: function () {
if (index > items.length -1) {
index = 0;
}
return items[index++];
},
prev: function () {
if (index < 0) {
index = items.length -1;
}
return items[index--];
}
}
}

在此迭代器之外,我需要使用索引变量。但我只获得旧值...我想获得当前索引。

最佳答案

JavaScript 始终是按值传递,JavaScript* 中没有按引用传递的概念。

您可以使用原子的原始版本来模拟效果:

let indexAtom = {value: 0};

function changeIndex(atom) {
atom.value = 5;
}

changeIndex(indexAtom);

assert(indexAtom.value === 5);
<小时/>

我会说,如果您需要这个,您通常会有代码异味,并且需要重新考虑您的方法。

在您的情况下,您应该使用闭包来达到相同的效果:

list: function (startingIndex = 0) {
let items = this.images;
let index = startingIndex; // note that index is defined here, inside of the function
return {
next: function () {
// index taken from closure.
if (index > items.length -1) {
index = 0;
}
return items[index++];
},
prev: function () {
// same index as the next() function
if (index < 0) {
index = items.length -1;
}
return items[index--];
}
}
}

* 一个常见的误解是对象是按引用传递的,这很令人困惑,因为对象的“值”也称为它的“引用”,程序员和命名事物。对象也是按值传递的,但对象的值是一个特殊的“事物”,称为“引用”或“身份”。这允许多个变量保存对同一对象的相同“引用”。

关于javascript - 如何通过引用传递变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52459668/

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