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