首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用或检查一个if条件中是否未定义

使用或检查一个if条件中是否未定义
EN

Stack Overflow用户
提问于 2017-07-13 22:53:37
回答 3查看 42关注 0票数 0
代码语言:javascript
运行
复制
if(!parent[0] || parent[0].style.display !== 'none') {
    console.log('1');
}

我试着在一行中完成这项工作,但在Firefox中失败了,因为它给出了类型错误,即parent is undefined。但在这里,我正在尝试检查,如果是,就执行if循环。所以我把它一分为二的唯一解决方案是:

代码语言:javascript
运行
复制
if(!parent[0]) {
    console.log('1');
    return;
}

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

我怎么才能排成一行呢?为什么第一个代码失败,并指出父对象是未定义的,我如何才能防止这种情况,并只执行内部的控制台日志。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-07-13 22:55:22

这应该可以完成以下工作:

代码语言:javascript
运行
复制
if(parent[0] && parent[0].style.display !== 'none') {
    console.log('1');
}

使用someVariable && condition意味着定义了someVariable并且满足了条件。

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

代码语言:javascript
运行
复制
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
EN

Stack Overflow用户

发布于 2017-07-13 22:55:19

将逻辑更改为&&

代码语言:javascript
运行
复制
if(parent[0] && parent[0].style.display !== 'none') {
    console.log('1');
}
票数 0
EN

Stack Overflow用户

发布于 2017-07-13 23:11:37

所以我建议你试试:

代码语言:javascript
运行
复制
"style" in parent[0] ? parent[0].style.display == "none" ? console.log(1) : 0 : 0;

注意,如果display属性不是由javascript操作设置的,它将不会反映所请求的属性的状态。你将得到一个空字符串。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45084255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档