写了三年 JavaScript,我才真正看懂 if 语句

22 阅读4分钟



有一天早上,我去楼下买早餐。老板抬头看了我一眼,问了一句:“要不要加鸡蛋?”

我点点头。老板立刻做了一个判断:

  • 如果我说“要”,那就多加一个鸡蛋;
  • 如果我说“不要”,那就直接装袋。

你发现没有?这个看似平平无奇的行为,本质上就是一个 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岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号“软件求生”,获取更多技术干货!