基本上我所追求的是这个,
var foo = 'I am foo!';
alert(window['foo']);
// output = I am foo!
这在jQuery包装器中不起作用,我明白这可能是由于jQuery重命名了窗口对象或诸如此类的东西。如果有人知道如果在jQuery包装器中这是可能的话,我会很感激这些知识!
答案 0 :(得分:2)
foo = "I am foo!";
如果你的var
行周围有一个函数范围,它会将它定义为局部变量而不是全局变量。这不是jQuery“重命名窗口对象”或任何愚蠢的东西,它只是var
的工作方式。我个人在做
window.foo = "I am foo!";
// or
window["foo"] = "I am foo!";
但是,为了明确你想要定义一个全局变量。或者用评论说出来。
答案 1 :(得分:1)
jQuery没有重命名窗口对象 - jQuery实际上在它下面(window.jQuery)。
试试这个:
window.foo = 'I am foo!';
alert(window.foo);
答案 2 :(得分:0)
对于非全局变量或私有变量,可以在字符串表达式上使用eval;
var JohnDoe = function(foo){
var x;
eval("x = foo");
return x;
};
//now we can setup foo values
JohnDoe("MAKUKULA")
=> "MAKUKULA"
但可能会指出以下内容:
此功能已过时。虽然它可能仍然适用于某些浏览器, 不鼓励使用它,因为它可以随时删除。尝试 避免使用它。