JS修改变量val1后sum值未更新,为何控制台仍输出旧结果?
为什么修改val1后sum的值没有更新?
这是因为变量赋值是一次性计算结果的:
当你执行let sum = val1 + val2时,JavaScript会立刻取当时val1(值为2)和val2(值为3)的数值相加,把结果5直接存在sum变量里。从这一刻起,sum就只是一个存储了5的独立变量,和val1、val2再也没有关联——哪怕你之后修改val1的值,sum的数值不会自动重新计算。
如果想要sum能跟随val1或val2的变化自动更新,可以用以下两种方式:
方式1:用函数动态计算
每次需要求和时调用函数,它会实时取当前的val1和val2值计算:
let val1 = 2 let val2 = 3 const getSum = () => val1 + val2 console.log(getSum()) // 输出5 val1 = 3 console.log(getSum()) // 输出6
方式2:用对象的getter属性
通过getter定义一个动态计算的属性,每次访问它时都会重新求值:
let val1 = 2 let val2 = 3 const calc = { get sum() { return val1 + val2 } } console.log(calc.sum) // 输出5 val1 = 3 console.log(calc.sum) // 输出6
内容的提问来源于stack exchange,提问作者Tesla Fake
相关产品推荐
相关产品推荐

