【问题标题】:Not able to change value of Global var from inside function无法从内部函数更改全局变量的值
【发布时间】:2021-02-07 23:27:26
【问题描述】:

我尝试使用this solution,但它对我不起作用。就我而言,我正在尝试使用 1 个函数保存一个变量并从另一个函数调用它

var postalcode = "code didn't change";

export function save_postal_code(code) {
        var localcode = code
        let postalcode = localcode;
        console.log(code);
}

export function get_postal_code() {
        console.log(postalcode);
        return postalcode;
}

save_postal_code 函数记录正确的值,但 get_postal_code 函数不记录。我不知道我做错了什么。

【问题讨论】:

  • 我不确定你在期待什么。您正在声明一个新的本地变量“邮政编码”,因此它与全局变量没有任何关系

标签: javascript velo


【解决方案1】:

您是在 save_postal_code() 内重新声明 postalcode,而不是更新其值。
代码需要进一步修改,但这超出了这个答案的范围。
要在 save_postal_code() 中更新 postalcode,请尝试:

var postalcode = "code didn't change";

function save_postal_code(code) {
    let localcode = code
    postalcode = localcode;
}

function get_postal_code() {
    return postalcode;
}

save_postal_code("123")
console.log(get_postal_code())

【讨论】:

  • 您在 StackOverflow 中的 sn-p 有效,但不适用于我的网站。我正在使用 Wix Velo 制作我的网站,也许 Wix 有问题?
  • Wix 可能会限制你的 JavaScript 执行,但很难远程知道你的代码到底发生了什么。
【解决方案2】:

发生这种情况是因为您使用 let 关键字再次实例化变量(使用相同名称创建更直接的局部变量)

删除 let 关键字应该可以解决您的问题

var postalcode = "code didn't change";

export function save_postal_code(code) {
        var localcode = code
        postalcode = localcode;
        console.log(code);
}

export function get_postal_code() {
        console.log(postalcode);
        return postalcode;
}

【讨论】:

  • 如果你能解释为什么这样做(他声明了一个新的局部变量,其名称与全局变量相同),它会显着改善这个答案。参考 JS 如何处理变量会更好:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-14
  • 1970-01-01
  • 2021-03-12
  • 2019-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多