找出变量是否存在
我想知道是否存在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的类型是“对象”。