深度Javascript检查是否未定义没有TypeError

luc*_*nov 10 javascript syntax undefined typeerror isset

我写的东西很累

if (
  typeof Foo != 'undefined' &&
  typeof Foo.bar != 'undefined' &&
  typeof Foo.bar.baz != 'undefined' &&
  Foo.bar.baz == 'qux'
) {...}
Run Code Online (Sandbox Code Playgroud)

在PHP中它更好一点:

if (!empty($foo['bar']['baz']) && $foo['bar']['baz'] == 'qux') {...}
Run Code Online (Sandbox Code Playgroud)

理想情况下它将是:

function u(value) {
    return (typeof value != 'undefined') ? value:null;
}
if (u(Foo.bar.baz) == 'qux') {...}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试这样做时,浏览器显示"TypeError".有没有办法让"你"功能?

Baz*_*nga 6

您不必明确声明未定义.检查可以是这样的:

if(foo && foo.bar && foo.bar.obj && foo.bar.obj.prop1)
Run Code Online (Sandbox Code Playgroud)

或者,如果有任何错误,您可以使用try catch块来捕获:

try
{
  if(foo && foo.bar && foo.bar.obj && foo.bar.obj.prop1)
    {}
}
catch(e)
{
 alert(e);
}
Run Code Online (Sandbox Code Playgroud)

但是,我可以看到问题所在.我建议尽量避免像你一样深陷.