想象一下。在 JavaScript 世界裏,有一家非常忙碌的工廠,名字叫 Number Factory。這家工廠每天的工作就是——處理各種數字請求。
有的請求很簡單:
“幫我算一下 2 × 3。”
有的請求就很奇怪:
“幫我算一下 '6' * '2'。”
“那 null / 5 呢?”
“true % 2 會剩下什麼?”
於是,工廠門口站着三位老員工:
- 乘法操作符 * —— 力氣最大
- 除法操作符 / —— 切得最細
- 取模操作符 % —— 專門管“剩下多少”
今天,我們就以數字工廠的一天為主線,把 JavaScript 的乘性操作符徹底講透。
什麼是乘性操作符?
在 JavaScript 中,乘性操作符(Multiplicative Operators) 一共有三個:
聽起來是不是很簡單?
別急。JavaScript 的精髓,從來不在“能算”,而在——它是怎麼幫你算的。
乘法操作符 *:力氣最大的老員工
1、最普通的乘法
這是最常見的用法:
沒什麼好説的,對吧?但 JavaScript 從不滿足於“普通”。
2、字符串 × 數字:先換工服再幹活
在數字工廠裏,只要你拿着 * 進門,不管你是誰,都得先換成 Number 工服。
規則很明確:乘法操作符會把操作數隱式轉換成 Number 類型
但如果換不了呢?
3、換不了工服的下場:NaN
在工廠裏,'abc' 被領到更衣室一看:“兄弟,你這不是數字啊。”
於是結果直接變成:
4、特殊值參與乘法
我們來看一張非常重要的表:
示例代碼:
面試高頻點:null 在數值運算中,幾乎總是 0。
除法操作符 /:切得最細的老員工
如果説乘法是“使勁幹活”,那除法就是——精細分配。
1、基本除法
JavaScript 的除法,默認是浮點除法,不會像某些語言那樣自動取整。
2、被除數是 0?故事開始刺激了
在數字工廠裏,除法員工遇到 0,會很冷靜地説一句:“無限大。”
3、0 / 0:工廠直接宕機
規則總結一下:
4、除法中的隱式轉換
和乘法一樣,除法也會觸發 Number 轉換:
規則一句話記住:乘法和除法,是 JavaScript 中最“嚴格”的操作符之一,它們不玩字符串拼接,只認數字。
取模操作符 %:管“剩下多少”的老員工
終於輪到今天最容易被誤解的一個了。
1、什麼是取模?
取模,不是取百分比,而是:取除法後的餘數
在數字工廠裏:10 塊錢,每人發 3 塊,發完以後桌上還剩 1 塊。
2、取模的經典應用場景
✔ 判斷奇偶
這是前端面試出現頻率極高的一種寫法。
3、負數取模,很多人會算錯
記住一個核心規則:取模結果的符號,跟被除數一致
4、特殊值參與取模
對,你沒看錯:
- null → 0
- true → 1
三大操作符行為對照表(重點收藏)
這張表,我建議你直接截圖:
為什麼面試官愛問“乘性操作符”?
因為它表面簡單,實際全是坑:
- 隱式類型轉換
- NaN 的傳染性
- Infinity 的出現條件
- 負數取模的規則
- null / undefined 的差異
很多人寫 JavaScript 寫了好幾年,卻在這一塊翻車。
總結
如果你今天只能記住三句話,請記住這三句:
乘法、除法、取模,都會把操作數轉成 Number
轉不了的,直接 NaN
取模結果的符號,永遠跟被除數走
JavaScript 從來不是“隨便算”,而是規則清晰,只是你沒系統看過。
END
如果你覺得這篇文章對你有幫助,歡迎點贊、收藏、轉發給那個總是被 JS 隱式轉換坑的朋友。
我們,下篇見。
我是小米,一個喜歡分享技術的31歲程序員。如果你喜歡我的文章,歡迎關注我的微信公眾號“軟件求生”,獲取更多技術乾貨!