使用内部函数更改全局变量值 window.onload
Change global variable value with a function from inside 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;
}
您不能在 javascript 中通过 reference 传递值,它认为您只是在尝试使用变量的 value .为此,您需要使用 指针,在 javascript 等语言中不可用。为了使用您当前的方法实现此目的,您需要为 每个引用 创建一个 全局变量 ,并每次使用不同的 function.(每个变量需要一个单独的函数,并且只将 'value' 作为参数;并将变量设置为传递给函数的相应值 'addTo<varName>').然而,这种方法似乎是不必要的,而且非常低效。只需在您的代码中手动设置它们,根本不会造成伤害;像这样:
testStr += val; // This should not be nested inside a function like addToStr.
... 而不是为每个引用使用单独的函数,老实说,这根本没有必要,无论是在您的情况下还是在一般情况下。
您还可以 return 函数中的新值并再次使用它;根本没有必要。
我正在构建一个计算器。为什么 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;
}
您不能在 javascript 中通过 reference 传递值,它认为您只是在尝试使用变量的 value .为此,您需要使用 指针,在 javascript 等语言中不可用。为了使用您当前的方法实现此目的,您需要为 每个引用 创建一个 全局变量 ,并每次使用不同的 function.(每个变量需要一个单独的函数,并且只将 'value' 作为参数;并将变量设置为传递给函数的相应值 'addTo<varName>').然而,这种方法似乎是不必要的,而且非常低效。只需在您的代码中手动设置它们,根本不会造成伤害;像这样:
testStr += val; // This should not be nested inside a function like addToStr.
... 而不是为每个引用使用单独的函数,老实说,这根本没有必要,无论是在您的情况下还是在一般情况下。 您还可以 return 函数中的新值并再次使用它;根本没有必要。