You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

模板字面量表达式未随变量更新,该如何修复?

问题修复方案与替代方案

模板字面量在定义时会立即计算表达式的值并生成最终字符串,后续money变量的变化不会影响已经生成的description字符串,这就是无论调用多少次payday(),输出始终是初始值的原因。以下是几种可行的修复方案:

方案一:将description改为函数

每次需要获取描述文本时调用函数,让模板字面量重新求值:

var money = 100;

function getDescription() {
    return `You have ${money} money`;
}

function payday() { 
    money += 50;
}

function runScenario() {
    console.log(getDescription());
}

调用runScenario()时,会执行getDescription()函数,动态获取当前money的值生成最新字符串。

方案二:使用Getter访问器

把description定义为对象的getter属性,每次访问时自动重新计算:

var money = 100;
var status = {
    get description() {
        return `You have ${money} money`;
    }
};

function payday() { 
    money += 50;
}

function runScenario() {
    console.log(status.description);
}

访问status.description时,会触发getter函数,实时生成包含当前money值的字符串,用法和访问普通变量类似。

方案三:使用Proxy(复杂场景适用)

通过Proxy拦截属性访问,实现动态求值:

var money = 100;
var description = new Proxy({}, {
    get(target, prop) {
        if (prop === 'text') {
            return `You have ${money} money`;
        }
        return Reflect.get(target, prop);
    }
});

function payday() { 
    money += 50;
}

function runScenario() {
    console.log(description.text);
}

这种方式适合需要对多个属性做动态处理的场景,每次访问description.text时都会重新计算最新值。


内容的提问来源于stack exchange,提问作者pyradim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 07:52:20