Javascript - 如何在程序设置后更新变量?

Kev*_*eal 0 javascript jquery procedural-programming

我有一个在我的函数顶部定义的变量和一个直接在其下面引用该变量的JSON对象.一个click事件,一些循环和一个匿名函数稍后我更新第一个变量的值然后引用JSON对象的属性,期望它具有新值,但这不起作用.

我的代码看起来像这样:

var errorval = "Not set";
var rules = {
    firstRule : {
        name : 'example',
        message : 'Needs to be '+errorval+' characters long'
    }
}
$('.button').on('click', function(){
    for(var foo in bar) {
        $.each(foo, function(){
            errorval = 3;
            // ALERTS "Needs to be Not set characters long"
            alert(rules.firstRule.message);
        });
    }
});
Run Code Online (Sandbox Code Playgroud)

所以我问我errorval在代码中如何更新,以便rules对象在message属性中具有新值.

los*_*rce 5

这可能会解决您的问题

var errorval = "Not set";
var rules = {
    firstRule : {
        name : 'example',
        getMessage : function() {
          return 'Needs to be '+errorval+' characters long';
        }
    }
}
$('.button').on('click', function(){
    for(var foo in bar) {
        $.each(foo, function(){
            errorval = 3;
            // ALERTS "Needs to be Not set characters long"
            alert(rules.firstRule.getMessage());
        });
    }
});
Run Code Online (Sandbox Code Playgroud)

您可以调用getMessage方法而不是字符串属性,该方法根据errorval的当前值返回一个字符串