找出变量是否存在

我想知道是否存在Javascript变量。 这是我到目前为止从不同的论坛拼凑而成的:

function valueOfVar(foo){ var has_foo = typeof foo != 'undefined'; if(has_foo){ alert('1 = true'); return true; } else { alert('1 = false'); return false; } } 

请注意,我希望传入一个字符串作为foo。 示例:valueOfVar(box_split [0] +’_ 2’)

现在,我认为这不起作用,因为当某些变量甚至不存在时它返回true。 事实上,它似乎一直都是真实的。

当我使用它时,一个有效的JQuery实现也会很棒。

谢谢大家的帮助

你的意思是这样的吗?

 function variableDefined (name) { return typeof this[name] !== 'undefined'; } console.log(variableDefined('fred')); // Logs "false" var fred = 10; console.log(variableDefined('fred')); // Logs "true" 

如果你想能够处理局部变量,你将不得不做一些非常奇怪的事情:

 function variableDefined2 (value) { return typeof value !== 'undefined'; } function test() { var name = 'alice' console.log(variableDefined2(eval(name))); var alice = 11; console.log(variableDefined2(eval(name))); } test(); // Logs false, true 

valueOfVar(box_split[0]+'_2')测试的问题在于您将字符串附加到undefined属性。 您将始终将字符串传递给valueOfVar() ,其值为'undefined_2'

您会注意到,如果您尝试以下操作, typeof运算符将返回'string'

 function valueOfVar(foo){ alert(typeof foo); } valueOfVar(box_split[0]+'_2'); 

typeof运算符适用于这些类型的测试,但您不能将任何内容附加到未定义的变量,否则它将始终测试为true:

 if (typeof foo === 'undefined') { // foo does not exist } else { // it does } 

不确定这是否解决了您的问题,但在JavaScript中,null与undefined不同。 如果未定义变量,您编写的代码对于测试是正确的。 IE:

  

顺便说一句,null的类型是“对象”。