1

我正在尝试在 jQuery 中创建动态变量。我尝试使用eval()它似乎工作正常,但我不认为这eval()是一个 jQuery 函数。jQuery中是否有等价物eval()?在这里查看我的代码:http: //jsfiddle.net/3CXgy/

var test = function(pos) {
    alert(eval('COUNT_'+pos));
}

var COUNT_LEFT = 20;
var COUNT_RIGHT = 30;
test('LEFT');
test('RIGHT');

除了使用之外,还有其他方法可以做到这一点eval()吗?我不确定eval()在上面的示例中是否完全正常。

4

3 回答 3

7

很少有任何理由使用 eval

这是您的代码,假设变量是在头部定义的

var test = function(pos) {
    alert(window['COUNT_'+pos]);
}

var COUNT_LEFT = 20;
var COUNT_RIGHT = 30;
test('LEFT');
test('RIGHT');

为了不污染全局命名空间,请使用

var COUNT = {"left":20, "right":30 }
var pos = "left";
alert(COUNT[pos]);
于 2013-03-17T08:59:44.880 回答
2

我个人更喜欢将它存储在一个我们可以随时轻松访问、添加、修改和删除的对象中。

var count = {
    'left' : 20,
    'right' : 30
}

var test = function(pos){
    alert(count[pos]);
}

test('left');
test('right');

如果您觉得需要使用大写字母,请确保使用有凝聚力的模式,因此在函数中将其全部切换为小写字母。

var test = function(pos){
    alert(count[pos.toLowerCase()]);
}
于 2013-03-17T09:02:32.170 回答
1

要按名称访问全局变量,请使用以下表示法:

window['COUNT_'+pos]

通常您希望将变量保存在对象中:

var obj = {
     COUNT_LEFT:20,
     COUNT_RIGHT:30
}

然后您可以将“变量”作为obj['COUNT_'+pos].

您写的问题让我们认为您并没有真正了解 jQuery 是什么。jQuery 是一个提供有用函数的库,您可以在 JavaScript 代码中使用这些函数。你不能用 jQuery 编程:你可以使用 JavaScript 函数在 JavaScript 中编程,其中一些函数被 jQuery 库所采用。

于 2013-03-17T08:59:17.397 回答