变量不更新Javascript
我有一个变量x,在我的程序中,它会被更改几次。变量y也是。但是我需要变量xy变量不更新Javascript,javascript,variables,Javascript,Variables,我有一个变量x,在我的程序中,它会被更改几次。变量y也是。但是我需要变量xy 设x=1; 设y=1; 设xy='X'+X+'Y'+Y//应该看起来像X1Y1 x+=1; y+=1; 控制台日志(xy); //输出仍然是X1Y1,而不是X2Y2,就像我想要的那样这是因为您正在将xy变量设置为x=1和y=1,然后在声明变量后更改变量。如果要返回具有更新值的字符串,请使用函数 let x = 1 let y = 1 function returnString(x, y) { return
设x=1;
设y=1;
设xy='X'+X+'Y'+Y//应该看起来像X1Y1
x+=1;
y+=1;
控制台日志(xy);
//输出仍然是X1Y1,而不是X2Y2,就像我想要的那样
这是因为您正在将xy变量设置为x=1和y=1,然后在声明变量后更改变量。如果要返回具有更新值的字符串,请使用函数
let x = 1
let y = 1
function returnString(x, y) {
return `X${x}Y${y}`
}
returnString(x, y)
这是因为
xy
被分配了一个文本值,而不是您所想到的“模板”xy
被分配一个硬编码值X1Y1
如果要执行建议的操作,则需要使用函数,例如:
let z = (a,b) => 'X' + a + 'Y' + b;
因此,无论何时,只要您想要获得一个值,就可以调用z函数。这几乎是任何编程语言中函数的精确用例
let x = 1;
let y = 1;
let xy = () => 'X' + x + 'Y' + y;
x += 1;
y += 1;
xy(); // 'X2Y2'
这是javascript的预期行为。 因为在生成xy字符串时使用了变量x和y。请注意,x或y的引用未被保存,因此当x或y发生变化时,xy会被更新 更合适的解决方案是使xy起作用 设xy=()=>('X'+X+'Y'+Y)
如果您确实想要看起来像您想要的东西,并且避免使用()函数,那么您也可以在对象中使用getter,或者在窗口中使用更难定义的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
}
})