首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用window.onload内部的函数更改全局变量值

使用window.onload内部的函数更改全局变量值
EN

Stack Overflow用户
提问于 2016-12-25 01:00:04
回答 1查看 1K关注 0票数 0

我在建一个计算器。为什么addToStr函数不能更改全局变量的值?(为了缩短代码,我只抽样了一些开关语句的情况)。

代码语言:javascript
复制
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;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-25 01:09:34

您不能在javascript中通过引用传递值,它认为您只是试图使用变量的值。为了做到这一点,您需要使用指针,在javascript这样的语言中,这些是不可用的。为了通过使用当前的方法来实现这一点,您需要为每个引用创建一个全局变量,并使用不同的函数每次设置它们。(每个变量都需要一个单独的函数,并且只接受' value‘作为参数;并将变量设置为传递给函数’addTo‘的相应值)。然而,这种方法似乎没有必要,而且效率很低。只需在代码中手动设置它们,就不会有任何伤害;如下所示:

代码语言:javascript
复制
testStr += val; // This should not be nested inside a function like addToStr.

..。而不是对每个引用使用单独的函数,老实说,这在您的情况下和一般情况下都是不必要的。您还可以返回函数中的新值,并使用它,但再次使用;根本不需要。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41317994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档