gpt4 book ai didi

javascript - 我可以更改另一个变量中的 javascript 变量吗?

转载 作者:行者123 更新时间:2023-11-29 16:15:14 26 4
gpt4 key购买 nike

这是我的问题。点击递增按钮后,y 等于 7,但 z 保持等于 7 而不是变为 8。为什么 javascript 变量不在其他变量中更新?这个问题有解决办法吗?我确定我无法理解 javascript 的一个基本属性,但我似乎无法弄清楚。

<body>
<script>
var y=6;
var z=1+y;
</script>
<button onclick="y++">Increment</button>
<button onclick="alert(y)">What is y?</button>
<button onclick="alert(z)">What is z?</button>
</body>

最佳答案

保存在变量 z 上的值是在您将其分配给变量时计算的:

var z=1+y;

如果你想改变它,你必须手动更新它:

<button onclick="z=++y+1">Increment</button>

我相信大多数计算机语言的行为都是如此。


在JavaScript和其他语言中你可以使用“getters”和“setters”来实现你想要的,但是代码会变得更加复杂。判断你是否真的认为有必要:

<body>
<script>
var vals = {
_y : 0,
z : 0,
set y(val) {
this._y = val;
},
get y() {
this.z = this._y + 1
return this._y;
}
}
vals.y = 6;
vals.z = 1 + vals.y;
</script>
<button onclick="vals.y++">Increment</button>
<button onclick="alert(vals.y)">What is y?</button>
<button onclick="alert(vals.z)">What is z?</button>
</body>

http://jsbin.com/udediy/1/edit


另一个更简单的解决方案是只使用一个函数。这对于您给出的示例很有效:

<body>
<script>
var y=6;
var z = function() {
return 1+y;
}
</script>
<button onclick="y++">Increment</button>
<button onclick="alert(y)">What is y?</button>
<button onclick="alert(z())">What is z?</button>
</body>

http://jsbin.com/ojorax/1/edit

关于javascript - 我可以更改另一个变量中的 javascript 变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17311011/

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