想象一下。在 JavaScript 世界裏,有一家非常忙碌的工廠,名字叫 Number Factory。這家工廠每天的工作就是——處理各種數字請求

有的請求很簡單:

“幫我算一下 2 × 3。”

有的請求就很奇怪:

“幫我算一下 '6' * '2'。”

“那 null / 5 呢?”

“true % 2 會剩下什麼?”

於是,工廠門口站着三位老員工:

  • 乘法操作符 * —— 力氣最大
  • 除法操作符 / —— 切得最細
  • 取模操作符 % —— 專門管“剩下多少”

今天,我們就以數字工廠的一天為主線,把 JavaScript 的乘性操作符徹底講透。

什麼是乘性操作符?

在 JavaScript 中,乘性操作符(Multiplicative Operators) 一共有三個:

別再死記硬背了,一篇文章搞懂 JS 乘性操作符_操作符

聽起來是不是很簡單?

別急。JavaScript 的精髓,從來不在“能算”,而在——它是怎麼幫你算的

乘法操作符 *:力氣最大的老員工

1、最普通的乘法

這是最常見的用法:

別再死記硬背了,一篇文章搞懂 JS 乘性操作符_操作符_02

沒什麼好説的,對吧?但 JavaScript 從不滿足於“普通”。

2、字符串 × 數字:先換工服再幹活

在數字工廠裏,只要你拿着 * 進門,不管你是誰,都得先換成 Number 工服

別再死記硬背了,一篇文章搞懂 JS 乘性操作符_操作符_03

規則很明確:乘法操作符會把操作數隱式轉換成 Number 類型

但如果換不了呢?

3、換不了工服的下場:NaN

別再死記硬背了,一篇文章搞懂 JS 乘性操作符_隱式轉換_04

在工廠裏,'abc' 被領到更衣室一看:“兄弟,你這不是數字啊。”

於是結果直接變成:

別再死記硬背了,一篇文章搞懂 JS 乘性操作符_取模_05

4、特殊值參與乘法

我們來看一張非常重要的表:

別再死記硬背了,一篇文章搞懂 JS 乘性操作符_操作符_06

示例代碼:

別再死記硬背了,一篇文章搞懂 JS 乘性操作符_取模_07

面試高頻點:null 在數值運算中,幾乎總是 0。

除法操作符 /:切得最細的老員工

如果説乘法是“使勁幹活”,那除法就是——精細分配

1、基本除法

別再死記硬背了,一篇文章搞懂 JS 乘性操作符_隱式轉換_08

JavaScript 的除法,默認是浮點除法,不會像某些語言那樣自動取整。

2、被除數是 0?故事開始刺激了

別再死記硬背了,一篇文章搞懂 JS 乘性操作符_隱式轉換_09

在數字工廠裏,除法員工遇到 0,會很冷靜地説一句:“無限大。”

3、0 / 0:工廠直接宕機

別再死記硬背了,一篇文章搞懂 JS 乘性操作符_隱式轉換_10

規則總結一下:

別再死記硬背了,一篇文章搞懂 JS 乘性操作符_隱式轉換_11

4、除法中的隱式轉換

和乘法一樣,除法也會觸發 Number 轉換

別再死記硬背了,一篇文章搞懂 JS 乘性操作符_隱式轉換_12

規則一句話記住:乘法和除法,是 JavaScript 中最“嚴格”的操作符之一,它們不玩字符串拼接,只認數字。

取模操作符 %:管“剩下多少”的老員工

終於輪到今天最容易被誤解的一個了。

1、什麼是取模?

取模,不是取百分比,而是:取除法後的餘數

別再死記硬背了,一篇文章搞懂 JS 乘性操作符_隱式轉換_13

在數字工廠裏:10 塊錢,每人發 3 塊,發完以後桌上還剩 1 塊。

2、取模的經典應用場景

✔ 判斷奇偶

別再死記硬背了,一篇文章搞懂 JS 乘性操作符_隱式轉換_14

這是前端面試出現頻率極高的一種寫法。

3、負數取模,很多人會算錯

別再死記硬背了,一篇文章搞懂 JS 乘性操作符_取模_15

記住一個核心規則取模結果的符號,跟被除數一致

別再死記硬背了,一篇文章搞懂 JS 乘性操作符_取模_16

4、特殊值參與取模

別再死記硬背了,一篇文章搞懂 JS 乘性操作符_隱式轉換_17

對,你沒看錯:

  • null → 0
  • true → 1

三大操作符行為對照表(重點收藏)

這張表,我建議你直接截圖:

別再死記硬背了,一篇文章搞懂 JS 乘性操作符_隱式轉換_18

為什麼面試官愛問“乘性操作符”?

因為它表面簡單,實際全是坑

  1. 隱式類型轉換
  2. NaN 的傳染性
  3. Infinity 的出現條件
  4. 負數取模的規則
  5. null / undefined 的差異

很多人寫 JavaScript 寫了好幾年,卻在這一塊翻車。

總結

如果你今天只能記住三句話,請記住這三句:

乘法、除法、取模,都會把操作數轉成 Number

轉不了的,直接 NaN

取模結果的符號,永遠跟被除數走

JavaScript 從來不是“隨便算”,而是規則清晰,只是你沒系統看過

END

如果你覺得這篇文章對你有幫助,歡迎點贊、收藏、轉發給那個總是被 JS 隱式轉換坑的朋友

我們,下篇見。

我是小米,一個喜歡分享技術的31歲程序員。如果你喜歡我的文章,歡迎關注我的微信公眾號“軟件求生”,獲取更多技術乾貨!