我有变量x,它会在我的程序中多次更改。而且我也有变量y。但是我需要变量xy。
let x = 1;
let y = 1;
let xy = 'X' + x + 'Y' + y //should look like X1Y1
x += 1;
y += 1;
console.log(xy);
//the output is still X1Y1 and not X2Y2 like I want it

我确定这是一个简单的答案,但我找不到解决方案,所以任何帮助都表示赞赏。
答案 0 :(得分:0)
这是因为您要将xy变量设置为x = 1且y = 1,然后在声明变量后更改变量。如果要返回包含更新值的字符串,请使用函数
let x = 1
let y = 1
function returnString(x, y) {
return `X${x}Y${y}`
}
returnString(x, y)
答案 1 :(得分:0)
这是因为xy
被分配了一个字面值,而不是"模板",可以这么说,你正在考虑。 xy
被分配了X1Y1的硬编码值。
如果你想做你建议你需要使用的功能,例如:
let z = (a,b) => 'X' + a + 'Y' + b;
这样,无论何时想要获取值,都可以调用z函数。
答案 2 :(得分:0)
这几乎是函数的精确用例,几乎可以用于任何编程语言。
let x = 1;
let y = 1;
let xy = () => 'X' + x + 'Y' + y;
x += 1;
y += 1;
xy(); // 'X2Y2'
答案 3 :(得分:0)
这是javascript的预期行为。 由于在生成 xy 字符串时使用变量 x 和 y 。请注意,未保存 x 或 y 的引用,以便在x或y更改时 xy 更新。
更合适的解决方案是使 xy 功能。
让xy =()=> ('X'+ x +'Y'+ y);
答案 4 :(得分:0)
如果你真的想要一些看起来像你想要的东西并且避免使用(),那么你也可以在一个对象中使用一个getter,或者在窗口上使用更难的东西来代替一个函数。
在一个对象中:
var obj = {
get xy() {
return "X" + x + "Y" + y
}
}
var x = 1, y = 1
alert(obj.xy) // 'X1Y1'
x++; y++;
alert(obj.xy) // 'X2Y2'
在窗口:
Object.defineProperty(window, 'xy', {
get: function() {
return 'X' + x + 'Y' + y
}
})