从函数更新全局变量

Update a global variable from a function

本文关键字:全局变量 更新 函数      更新时间:2023-09-26

我有 2 个变量,它们连接成另一个变量。 单击按钮时,变量的值应更新,串联的变量也应更新,但全局变量将保留原始值。

<button class="filter period" data-sort-value="number" data-period="ltd">LTD</button>
<button class="filter period" data-sort-value="number" data-period="r3">R+3</button>
<button class="filter period" data-sort-value="number" data-period="r12">R+12</button>
<button class="filter period" data-sort-value="number" data-period="rtodec">RTODEC</button>
<script>
    var region = "ww";
    var period = "ltd";
    var finalFilter = "data-" + region + "-" + period;
    $('button.filter').on('click', function () {
        if ( $(this).hasClass("period") ) {
            period = $(this).attr('data-period');
            console.log(finalFilter);
            console.log(period);
            updatedFinalFilter();
        }
    });
</script>

是的,我希望当其中一个周期或区域更改值时自动更新 finalFilter

实现这一目标的唯一方法是实际更新它。 JavaScript 中的变量不会根据您第一次设置它们的表达式自动更新。 后:

var finalFilter = "data-" + region + "-" + period;

已经运行,finalFilter纯粹设置为"data-ww-ltd" - 它不知道或链接到regionperiod.

所以在调用 updatedFinalFilter() 之前,你必须重新计算表达式:

var region = "ww";
var period = "ltd";
var finalFilter = "data-" + region + "-" + period;
$('button.filter').on('click', function () {
    if ( $(this).hasClass("period") ) {
        period = $(this).attr('data-period');
        finalFilter = "data-" + region + "-" + period;
        console.log(finalFilter);
        console.log(period);
        updatedFinalFilter();
    }
});

请注意,当我们从函数中更新它时,缺少var - 您不想在那里重新声明它,否则它将成为该函数本地范围的不同finalFilter