通过动态名称更新本地变量名称

时间:2014-08-11 20:59:34

标签: javascript jquery

我声明了以下全球 本地变量onetwo

我还有一个包含所有变量的对象及其起始值。

我遇到的问题是在检查变量是否具有localStorage值之后我想将'count'分配给 global 局部变量,但我不知道当我拥有的只是'关键'时,我知道如何将它分配给全局变量。

我可以为每个全局变量创建if语句,如

if( key == "one" )  { one == count }

但这会很乏味,有没有更简单的方法呢?

game = new Game();
function Game(){

    var one;
    var two;

    var variableStart = {
       "one":"100",
       "two":"200"
    }

    $.each(variableStart, function(){
        this.checkVariableValue = function( vName ){
            if( typeof localStorage[vName] == 'undefined' && localStorage[vName] == null )     {
               return false;
            }
            else{
                return localStorage[vName];
            }
        }
        var count;

        if( this.checkVariableValue( key ) == false ){
            count = value;
        }
        else{
            count = this.checkVariableValue(key);
        }

        if( key == one ){
            one = count;
        }
        else if( key == two ){
            two = count;
        }

    })
}

2 个答案:

答案 0 :(得分:1)

首先,使用像这样的全局变量确实是错误的编码。

其次,使用两个单独的变量就是编码错误。

那就是说,我会告诉你如何做你想做的事情:

// Instead of:
var globalName = key;
globalName = count;

// Take advantage of the fact that globals can be accessed off the 'window' object.
window[key] = count;

如何更清洁地

最好有一个全局对象,可能称为计数:

var counts = {};

然后,当你去分配值时:

counts[key] = counts;

答案 1 :(得分:0)

你可以像这样设置它。全局变量在全局元素中可用(通常为window

window[key] = count