我正在建造一个计算器。为什么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;
}
答案 0 :(得分:0)
您无法通过javascript中的引用传递值,它认为您只是尝试使用变量' 值。为此,您需要使用指针,其中不可用,使用javascript等语言。为了通过使用当前方法实现此目的,您需要为每个引用创建全局变量,并且每次使用不同的函数设置它们。 (每个变量需要一个单独的函数,并且只将' value'作为参数;并将变量设置为传递给函数的相应值" addTo< varName>& #39)。但是,这种方法似乎是不必要的,而且效率很高。只需在代码中手动设置它们,根本不会受到伤害;像这样:
testStr += val; // This should not be nested inside a function like addToStr.
...而不是为每个引用使用单独的函数,这实际上根本不需要,不是在你的情况下,也不是一般的。 您也可以在函数中返回新值并使用它,但是再次;没有必要。