gpt4 book ai didi

JavaScript,通过函数访问全局变量

转载 作者:行者123 更新时间:2023-11-30 09:54:06 25 4
gpt4 key购买 nike

在我说明我正在努力解决的问题之前,让我向您展示我的 JavaScript 代码。

var gVar = 0;

$("#plus").click(function(e) {
e.preventDefault();
gVar = gVar + 1;
alert(gVar);
});

$("#minus").click(function(e) {
e.preventDefault();
gVar = gVar + 1;
alert(gVar);
});

在上面的代码中,我首先设置了一个全局变量“gVar”,它的整数值为零。每当我单击 ID 为“加号”的按钮时,全局变量“gVar”的值将递增 1,这将在浏览器的对话框中打印出来。

除了“gVar”的值将减 1 之外,ID 为“减号”的按钮也会发生同样的事情。

为了整理上面的代码,我单独创建了一个函数,每当我单击这两个按钮时都会调用该函数。这是代码。

var gVar = 0;

var weird = function (button, Var, num1) {
$(button).click(function(e){
e.preventDefault();
Var = Var + num1;
alert(Var);
});
};

weird("#plus", gVar, 1);
weird("#minus", gVar, -1);

当我运行这段代码时,“gVar”的值永远不会改变,始终保持为“0”。

我想我隐约知道这里的问题是什么,但不完全确定是什么导致了这个问题。如果能为我澄清这个问题,我们将不胜感激。

此外,我很好奇是否有任何方法可以创建一个函数来实现相同的效果,而不是为两个不同的点击事件编写两次相似的代码集。

最佳答案

在 JavaScript 中,只有对象作为引用传递,所有其他类型(包括数字)在您将它们分配给另一个变量时被复制。

您可以改为将变量名称作为字符串传递,然后将其作为 window[Var] 引用:

var gVar = 0;

var weird = function (button, Var, num1) {
$(button).click(function(e){
e.preventDefault();
window[Var] = window[Var] + num1;
alert(window[Var]);
});
};

weird("#plus", "gVar", 1);
weird("#minus", "gVar", -1);

正如@shiplu.mokadd.im 所建议的,您还可以将 gVar 更改为对象:

var gVar = {value: 0};

var weird = function (button, Var, num1) {
$(button).click(function(e){
e.preventDefault();
Var.value = Var.value + num1;
alert(Var.value);
});
};

weird("#plus", gVar, 1);
weird("#minus", gVar, -1);

关于JavaScript,通过函数访问全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34883965/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com