大家好,我是31 岁的小米。如果你写过 JavaScript,一定有过这样的时刻:
明明代码不复杂,但结果就是不对;明明条件都写了,if 却像装死一样不进来。后来你会发现,问题往往不在变量,不在 API,而是在布尔操作符。
今天,我想给你讲一个故事。一个关于“门卫”、“安检”和“兜底方案”的故事。主角有三个:
- 逻辑非(!)
- 逻辑与(&&)
- 逻辑或(||)
故事的开场:布尔世界的小镇
在 JavaScript 的世界里,有一个很小、但非常重要的小镇,叫Boolean 镇。这个镇子里只有两种人:
- true
- false
没有灰色地带,没有“差不多”,你要么能过关,要么直接被拦下来。而镇子的大门口,站着三位守门人。
逻辑非(!):那个“唱反调”的门卫
1、逻辑非是什么?
逻辑非,符号是一个感叹号:
!value
它只干一件事:把“是”变成“不是”,把“不是”变成“是”。在 Boolean 镇里,它是最简单、也最“叛逆”的角色。
2、把它想象成:唱反调的门卫老王
想象一个场景。你去小区找朋友,门口有个门卫老王。规则是这样的:
- 如果你是业主→ 本来可以进
- 如果你不是业主 → 本来不能进
但老王今天心情不好,开始