javascript - !!!foo 和 !foo 一样吗?
问题描述
知道这!!foo
给了你的布尔值foo
,我看到一些程序员说最好使用它!!!foo
而不是!foo
因为你首先将它更改为它的布尔值然后否定该值。
所以我的问题是,
总是!!!foo
等于!foo
?( !!!foo === !foo
)
解决方案
是的。只是为了清楚起见:
!!x === x
通常不是真的,但如果x
已经是一个布尔值,则为真:“not (not true)”为真,“not (not false)”为假。
!foo
始终是布尔值;如果foo
为真,则为false
,否则为true
。
因此,如果您代替!foo
您x
,那!!(!foo) === (!foo)
总是正确的。删除括号不会改变意思,所以!!!foo === !foo
总是正确的。
这意味着没有充分的理由编写!!!foo
实际代码。改用就好!foo
了。
推荐阅读
- arrays - 如何找到给定数字之和的数组元素
- xamarin.forms - 设置 Picker ItemsSource 会导致“对象必须实现 IConvertible”。
- json - 创建 JSON 对象会阻止代码继续使用 pymongo
- javascript - 如何防止 Service Worker 删除缓存、PWA
- javascript - KnockoutJS 从 pureComputed 返回一个承诺
- branch.io - Unity android Session初始化已经发生错误
- python - 如何从带有字典的列表中生成文件,每个字典根据模板生成一个单独的文件?
- c - 为什么我的代码在提示用户后没有返回所需的输出
- linux - 如何将 find 返回的文件列表通过管道传输到 cat 并对它们进行排序
- jquery - jQuery,如何用千位分隔符替换滑块的值?