JavaScript 中以零開頭的數字:破解其中的奧秘
想像一下在JavaScript 中遇到以下程式碼:
var num = 040; console.log(num); // 32
很困惑,你可能想知道40 為何等於32。答案在於前導零。
在 JavaScript 的早期版本中,數字文字中的前導零表示八進位(以 8 為基數)數字,類似於十六進位的前導 0x。因此,「040」被解釋為 4x8^1 0x8^0 = 32。
然而,這種做法被證明是令人困惑的,並在 ECMAScript 3 中被降級為可選擴展。現代 JavaScript 強制執行嚴格模式,其中前導零為了保持一致性,禁止使用十進位文字。
ECMAScript 6 引入了使用 0o 和 0b 表示八進位和二進位數的新方法分別是前綴。使用前導零 (010) 的舊八進位格式在嚴格模式下成為語法錯誤。
因此,上面的程式碼現在將在嚴格模式下傳回語法錯誤。如果希望解析以 8 為基數的數字,可以使用建議的 0o 前綴或使用 parseInt,如下所示:
parseInt('010', 8); // Returns 8
為了確保正確解析十進位數字,請刪除前導零或使用 parseInt。
總之,理解 JavaScript 數位文字中前導零的歷史意義對於理解其行為和解釋程式碼至關重要正確。
以上是為什麼 JavaScript 中 `040` 等於 32?的詳細內容。更多資訊請關注PHP中文網其他相關文章!