[英]Change global variable value with a function from inside window.onload
我正在建立一個計算器。 為什么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;
}
您不能在javascript中通過引用傳遞值,它認為您只是在嘗試使用變量的value 。 為了做到這一點,你需要使用指針 ,這是不提供像JavaScript語言。 為了使用當前方法實現此目的,您需要為每個引用創建一個全局變量 ,並每次使用不同的函數進行設置。 (您需要為每個變量使用單獨的函數,並且僅將'value'作為參數;並將變量設置為傳遞給函數'addTo <varName>'的相應值)。 但是,這種方法似乎是不必要的並且效率很低 。 只需在您的代碼中手動設置它們,就不會有任何傷害。 像這樣:
testStr += val; // This should not be nested inside a function like addToStr.
...而不是為每個參考使用單獨的函數,這實際上根本沒有必要,在您的情況或一般情況下都沒有。 您也可以在函數中返回新值並使用它,但是要再次使用; 完全沒有必要。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.