簡體   English   中英

使用window.onload內部的函數更改全局變量值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM