在jQuery中是否有等效的eval()?

时间:2013-03-17 08:55:37

标签: jquery eval

我正在尝试在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()在上面的例子中是否完全正常。

3 个答案:

答案 0 :(得分:7)

很少有任何理由使用eval

这是你的代码,假设vars是在头部定义的

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]);

答案 1 :(得分: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()]);
}

答案 2 :(得分:1)

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

window['COUNT_'+pos]

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

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

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

你写的问题让我们觉得你并没有真正看到什么是jQuery。 jQuery是一个库,提供您从JavaScript代码中使用的有用函数。你不能用jQuery编程:你使用JavaScript函数在JavaScript中编程,其中一些是在jQuery库中编写的。