首页 > 解决方案 > !!!foo 和 !foo 一样吗?

问题描述

知道这!!foo给了你的布尔值foo,我看到一些程序员说最好使用它!!!foo而不是!foo因为你首先将它更改为它的布尔值然后否定该值。

所以我的问题是,

总是!!!foo等于!foo?( !!!foo === !foo)

标签: javascript

解决方案


是的。只是为了清楚起见:

!!x === x通常不是真的,但如果x已经是一个布尔值,则为真:“not (not true)”为真,“not (not false)”为假。

!foo始终是布尔值;如果foo为真,则为false,否则为true

因此,如果您代替!foox,那!!(!foo) === (!foo)总是正确的。删除括号不会改变意思,所以!!!foo === !foo总是正确的。

这意味着没有充分的理由编写!!!foo实际代码。改用就好!foo了。


推荐阅读