gpt4 book ai didi

Javascript 全局变量被设置为新值

转载 作者:行者123 更新时间:2023-11-28 06:34:35 25 4
gpt4 key购买 nike

我对 JavaScript 和编码不太熟悉,我需要一些帮助。

我将一个全局变量( generatedNumbers )设置为等于另一个变量(数字),以便我可以对数组进行一些验证。但是,当我更改数字的值时,我的全局变量 generatedNumbers 也会更改。任何帮助将不胜感激。

var generatedNumbers;

function generateNumbers(numberOfNumbers) {
'use strict';
var i;
generatedNumbers = [];
for (i = 0; i < numberOfNumbers; i = i + 1) {
generatedNumbers.push(generateRandomNumber(9).toString());
}
}

function checkEachValidNumberUsed(userExpression, numbers) {
'use strict';
var i, j;
for (i = 0; i < userExpression.length; i = i + 1) {
for (j = 0; j < numbers.length; j = j + 1) {
if (userExpression[i] === numbers[j]) {
numbers.splice(j, 1);
window.console.log(generatedNumbers);
}
}
}
if (numbers.length !== 0) {
return true;
}
}

function validateExpression(userExpression) {
'use strict';
var numbers, validUserInput;
numbers = generatedNumbers;
window.console.log(generatedNumbers);
if (checkEachValidNumberUsed(userExpression, numbers)) {
document.getElementById("feedbackText").innerHTML = "Each number must be used exactly once.";
} else {
return true;
}

最佳答案

当您使用赋值运算符 = 或将数组(以及所有其他非基本类型)传递给函数时,数组(以及所有其他非基本类型)是按引用传递的,而不是复制的,因此对 numbers(或 numbers 的元素值)将反射(reflect)在 generateNumbers 中。

对于此处的数组,numbers = generatedNumbers.slice(0); 将充分克隆该数组,但请记住,如果数组的内容不是基本类型(例如任何对象)使用 new 关键字创建的数组)将不会被克隆:两个数组将引用相同的对象。

关于Javascript 全局变量被设置为新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34401365/

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