在一次调用中检查未定义或 null 并分配 False [重复]

Posted

技术标签:

【中文标题】在一次调用中检查未定义或 null 并分配 False [重复]【英文标题】:Check for undefined or null in one call and assign False [duplicate] 【发布时间】:2021-07-12 10:55:48 【问题描述】:

我有这个功能:

dosomething(): void 
this.service.check(this.person.name, this.person.name).subscribe(response => 
  this.isGreatPerson = response == null ? false :response;
);

this.isGreatPerson 应该得到response(真或假),如果responseundefinednull,则生成this.isGreatPerson false。解决方案应该是一行。

谢谢!

【问题讨论】:

我不明白为什么这有两个接近的投票,这是一个合理而明确的问题 @Drenai 它们用于详细介绍此问题的副本 【参考方案1】:

如果只使用大括号,可以实现nullundefined的组合检查。

doSomething(): void 
     this.service.check(this.person.name, this.person.name).subscribe(response => 
        this.isGreatPerson = (response) ? response : false;
     );

如果responseundefinednull 都不是,它将被返回。否则false 就是答案。

【讨论】:

【参考方案2】:

this.isGreatPerson = !!response

!! 等价于将任何值转换为其布尔表示形式

如果响应为真或假,则返回真或假,如果为空或未定义,则返回假

【讨论】:

【参考方案3】:

由于您实际上只想要 response 的布尔值,请将 response 转换为布尔值:

this.isGreatPerson = Boolean(response);
// or as Drenai wrote:
this.isGreatPerson = !!response;

【讨论】:

以上是关于在一次调用中检查未定义或 null 并分配 False [重复]的主要内容,如果未能解决你的问题,请参考以下文章

内存相关问题

VB中子程序或函数未定义是啥意思

LR静态存储/动态存储/指针变量脚本说明

C# 在一次事件中获取的DATATABLE怎么让全局共享?

如何使用内置函数而不是 NULL 检查来验证指针?

微信小程序之无需服务端支持实现内容安全检查