变量不更新Javascript

时间:2018-06-09 19:18:47

标签: javascript variables

我有变量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




我确定这是一个简单的答案,但我找不到解决方案,所以任何帮助都表示赞赏。

5 个答案:

答案 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
   }
})