【发布时间】:2017-06-14 16:55:01
【问题描述】:
Re:JavaScript 中的!!,据我了解,这会将对象转换为布尔值。根据另一个 SO 线程中的答案,它“将 oObject 强制为布尔值。如果它是错误的(例如 0、null、未定义等),它将为假,否则为真。”
因此,我的问题是,这!! 是否比简单地检查虚假或真实存在更可靠?例如,我可以这样做:
return !!(this.services[0] && this.services[0].service);
或者我可以这样做:
if (this.services[0] && this.services[0].service) {
return true;
} else {
return false;
}
这些功能是否等效?
【问题讨论】:
-
如果您添加
else { return false; },它们是等价的,是的。你不会在if的条件下使用!!,但如果你想要一个一致的返回类型就很重要,例如,像这里。 -
您是在问它是否曾经有用,还是专门针对您的情况?
-
@shmosel,我在问它们是否功能等效。听起来,除了一个比另一个更简洁之外,就我上面的例子而言,它们是。
-
您将苹果与橙子进行比较。
!!不是检查 值的替代方法,它旨在将值从一种类型更改 到另一种类型。那么,再次,您是在询问您的特定示例还是一般用例? -
不存在
a和b的任何值,因此if(a&&b){return true}else{return false}将永远产生不同的值return !!(a&&b)。
标签: javascript boolean