Измените значение глобальной переменной с помощью функции из window.onload
Я строю калькулятор. Почему функция addToStr не может изменять значения глобальных переменных? (Я выбрал только несколько примеров операторов switch для сокращения кода).
window.onload = function () {
$(".buttons").click(function () {
var id = $(this).attr("id");
switch (id) {
case "b-7":
value = "7";
console.log(value);
addToStr(miniDisplayString, value);
addToStr(numberString, value);
break;
case "b-8":
value = "8";
addToStr(miniDisplayString, value);
addToStr(numberString, value);
break;
case "b-9":
value = "9";
addToStr(miniDisplayString, value);
addToStr(numberString, value);
break;
case "b-divide":
value = " / ";
addToStr(miniDisplayString, value);
break;
}
console.log("total = " + total);
console.log("miniDisplayString = " + miniDisplayString);
console.log("numberString = " + numberString);
});
}
var total = 0;
var value;
var miniDisplayString = "";
var numberString = "";
function addToStr(tot, val) {
tot += val;
}
1 ответ
Вы не можете передавать значения по ссылке в javascript, он думает, что вы просто пытаетесь использовать значение переменных. Для этого вам нужно будет использовать указатели, которые недоступны в таких языках, как javascript. Чтобы добиться этого с помощью вашего текущего метода, вам нужно будет создать глобальную переменную для каждой ссылки и устанавливать их каждый раз с помощью другой функции. (Вам понадобится отдельная функция для каждой переменной, и в качестве аргумента будет использоваться только значение 'value'; для переменной будет присвоено соответствующее значение, переданное функции 'addTo
testStr += val; // This should not be nested inside a function like addToStr.
... вместо использования отдельной функции для каждой ссылки, которая, честно говоря, вообще не нужна, ни в вашем случае, ни в целом. Вы также можете вернуть новое значение в функцию и использовать его, но снова; совсем не обязательно.