我想知道是否存在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实现也很棒。
感谢大家的帮助
答案 0 :(得分:6)
你的意思是这样吗?
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
答案 1 :(得分:1)
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
}
答案 2 :(得分:0)
不确定这是否解决了您的问题,但在JavaScript中,null与undefined不同。如果未定义变量,您编写的代码对于测试是正确的。 IE:
<script>
window.onload = function()
{
alert(typeof(abcd) == "undefined"); //true
abcd = null;
alert(typeof(abcd) == "undefined"); //false
};
</script>
顺便说一下,null的类型是“object”。