检查变量是否(已定义)在JavaScript中不起作用

时间:2011-08-15 21:06:15

标签: javascript testing undefined

对此行为感到困惑。我想做了类似的事情:

if (variable name)
{
    ... do this...
}

应该有效。但是,如果未定义变量,我只会得到'ReferenceError:找不到变量:'变量名,并且甚至不会执行else块。例如,我从另一个StackOverflow问题中得到的以下片段没有我测试时工作。有什么建议吗?

if(persons_name) 
{
    var name = persons_name;
} 
else 
{
    var name = "John Doe";
}

4 个答案:

答案 0 :(得分:3)

if (typeof persons_name !== 'undefined') {
  ...
} else {
  ...
}

请注意,您不需要使用typeof的大括号。

答案 1 :(得分:2)

与属性不同,必须先定义非限定名称才能使用它。所以,如果你正在寻找一个全局变量persons_name,你可以写

if (window.persons_name)

如果persons_name不存在,它将评估为undefined。或者,您可以简单地声明persons_name,如果您希望它存在。

var persons_name;

如果已存在,则不会更改persons_name的值。

答案 2 :(得分:0)

通过说var name;来定义变量;并通过说var name = "john doe";为其指定一个值。

答案 3 :(得分:0)

var name = (typeof persons_name !== 'undefined' || !(!!persons_name)) ?
    persons_name :
    'John Doe';