有一天早上,我去楼下买早餐。老板抬头看了我一眼,问了一句:“要不要加鸡蛋?”
我点点头。老板立刻做了一个判断:
- 如果我说“要”,那就多加一个鸡蛋;
- 如果我说“不要”,那就直接装袋。
你发现没有?这个看似平平无奇的行为,本质上就是一个 if 语句。现实世界里,几乎所有“做决定”的瞬间,背后都藏着一句潜台词:如果条件成立,就这么干;不成立,就不这么干。
而 JavaScript 的世界,本质上也是这样运转的。
if 语句:程序世界的“十字路口”
我一直觉得,if 语句特别像人生里的十字路口。你站在那里,面前有一个条件:
- 红灯还是绿灯?
- 余额够不够?
- 用户有没有登录?
不同的答案,会把你带向完全不同的方向。在 JavaScript 里,这个十字路口长这样:
是不是很像一句大白话?如果(条件是真的),那就执行这里面的代码。
所以我一直跟新人说一句话:学会 if,就等于学会了让程序“思考”。
条件到底在判断什么?
很多人刚学 if 的时候,都会有一个误区:“条件里是不是只能写 true 或 false?”
其实不是。在 JavaScript 里,if 判断的是这个条件转成布尔值之后,是不是 true。
这就有点像早餐摊老板的内心戏:
- 你说“要” → 在他脑子里等价于 true
- 你说“不要” → 在他脑子里等价于 false
比如:
你可能会懵:“100 也不是 true 啊,为什么会执行?”
这就引出了 JS 里一个非常有“性格”的概念:真假值(Truthy / Falsy) 。
JavaScript 的“性格”:什么算真,什么算假?
我常把 JavaScript 比喻成一个情绪化但很坦率的人。它心里有一张清单,写着:“这些我一看就觉得是假,剩下的,全都当真。”
这张“假值清单”其实很短:
- false
- 0
- ""(空字符串)
- null
- undefined
- NaN
只要你写进 if 里的值不在这张清单里,JS 就会点头:“嗯,这是真的。”
所以:
而:
这也是为什么我常说:if 语句写得好不好,直接决定了你是不是一个“靠谱的 JS 程序员”。
if...else:老板的“Plan B”
再回到早餐摊。老板不可能只考虑一种情况,对吧?所以现实中更常见的是:
- 如果你要鸡蛋,就加;
- 否则,就不加。
这在代码里就是:
else 的存在,本质上就是一句: “如果不是这样,那就那样。”
它让程序不再“犹豫”,而是无论如何都会走一条路。
if...else if...else:连续判断的“多选题”
后来有一天,老板升级了服务,开始问:你要什么套餐?
- A:基础版
- B:豪华版
- C:老板推荐版
这时候,简单的 if...else 已经不够用了。于是我们有了:
我特别喜欢把 else if 看成一次次追问:
- 第一次不满足?那我再问一个。
- 还不满足?继续问。
- 都不是?那就执行兜底方案。
但这里有一个非常重要、却常被忽略的点:if...else if...else 是“从上往下,只走一条路”的。
一旦某个条件成立,后面的判断统统不再执行。这就像老板一旦听到你说“豪华版”,他绝对不会再问你“要不要基础版”。
if 语句里,最容易踩的坑
说几个我当年真踩过的坑。
1、把 = 当成 == 或 ===
这是新手的经典翻车现场。
这不是比较,这是赋值。结果往往是:
- a 被改了
- 条件还成立了
- Bug 悄悄诞生了
2、忘了考虑“假值”
比如判断用户是否输入内容:
如果用户输入的是 "0"、" "、还是空字符串?
这些在业务上,可能含义完全不同。所以我一直建议:重要判断,写清楚一点,别偷懒。
if 不只是语法,是思维方式
写到这里,我想说一句掏心窝子的。很多人觉得:“if 有什么好讲的?三分钟就学会了。”
但真正把 if 用好的人,往往都有一个共性:逻辑特别清晰。
因为 if 考验的从来不是你记不记得语法,而是你能不能想明白这几件事:
- 条件到底是什么?
- 成立和不成立分别意味着什么?
- 有没有漏掉的情况?
- 兜底逻辑是什么?
说到底,if 不是写给 JavaScript 看的,而是写给未来的你、同事、接盘的人看的。
总结
每次有人问我:“小米,JS 这么多东西,最重要的是什么?”
我常半开玩笑地说一句:先把 if 写明白。
因为你会发现:
- 再复杂的业务,本质都是一堆判断
- 再高级的框架,底层也离不开条件分支
- 再花哨的代码,逻辑一乱,全盘皆输
if 就像程序世界里的“良心”。它不炫技,但决定了代码到底是不是在做对的事。
END
我是小米,一个喜欢分享技术的31岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号“软件求生”,获取更多技术干货!