我在建一个计算器。为什么addToStr函数不能更改全局变量的值?(为了缩短代码,我只抽样了一些开关语句的情况)。
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;
}发布于 2016-12-25 01:09:34
您不能在javascript中通过引用传递值,它认为您只是试图使用变量的值。为了做到这一点,您需要使用指针,在javascript这样的语言中,这些是不可用的。为了通过使用当前的方法来实现这一点,您需要为每个引用创建一个全局变量,并使用不同的函数每次设置它们。(每个变量都需要一个单独的函数,并且只接受' value‘作为参数;并将变量设置为传递给函数’addTo‘的相应值)。然而,这种方法似乎没有必要,而且效率很低。只需在代码中手动设置它们,就不会有任何伤害;如下所示:
testStr += val; // This should not be nested inside a function like addToStr...。而不是对每个引用使用单独的函数,老实说,这在您的情况下和一般情况下都是不必要的。您还可以返回函数中的新值,并使用它,但再次使用;根本不需要。
https://stackoverflow.com/questions/41317994
复制相似问题