使用或检查一个if条件中的undefined

时间:2017-07-13 14:53:37

标签: javascript

if(!parent[0] || parent[0].style.display !== 'none') {
    console.log('1');
}

我试图在一行中执行此操作,但它在Firefox中失败,给出类型错误,父[0]未定义。但在这里,我试图检查,如果是的话,只做if循环。所以我唯一的解决办法就是将其分成两部分:

if(!parent[0]) {
    console.log('1');
    return;
}

if(parent[0].style.display !== 'none') {
    console.log('1');
}

如何在一行中制作?为什么第一个代码失败并且说父[0]未定义,我该如何防止它,只是执行内部的控制台日志。

3 个答案:

答案 0 :(得分:1)

这应该做的工作:

if(parent[0] && parent[0].style.display !== 'none') {
    console.log('1');
}

使用someVariable && condition表示已定义someVariable且符合条件。

在我看来,最易读的代码是:

function doSomething() {
  // if condition is not met we quit the function
  if(parent[0] === undefined) {
    return false;
  }
  // parent[0] is defined we proceed
  // Perhaps other conditions that should quit the function
  if(parent[0].style.display === 'none') {
    return false;
  }
  // parent[0] is defined we proceed and all checks are done
  // All your logic here
}

答案 1 :(得分:0)

将逻辑更改为db.getCollection('tags').aggregate([ { $match:{ name:/sitt/i } }, { $project:{ name: 1, score:{ $switch:{ branches:[ { case:{ $eq:[ "$name", "sitt" ] }, then:100 } ], default:50 } } } } ])

&&

答案 2 :(得分:0)

所以我建议你试试:

"style" in parent[0] ? parent[0].style.display == "none" ? console.log(1) : 0 : 0;

请注意,如果display属性未通过javascript操作设置,则不会反映所请求属性的状态。例如:你会得到一个空字符串。