以下语句会如何输出?

022 - 017
// 3,18 - 15 = 3
 
018 - 045
// -19,18 - 37 = -19

在 JS 中,在 Number 类型前加 0 会转换为 8 进制,如果原来的值位上有大于 8 的数,则不会进行转换。

在 JS 中,有几种方法来进行进制转换,但只能通过 10 进制中转,即 10 进制转其他进制或者其他进制转 10 进制。

// 0x 表示十六进制,但是 js 会强制转换为十进制来运算,0xa == 10
var a = 0xa;
// 0 开头表示八进制,同样强制转换为十进制来运算 010 = 8
var b = 010;
 
// Number.parseInt 方法把字符串(只能由字母和数字组成)由低进制转高进制,如二进制转八进制,但是八进制不能转二进制,radix 表示进制,取值 2~36,返回一个字符串。
Number.parseInt(string,radix)
Number.parseInt('0101',2) // 5
Number.parseInt('0101',8) // 65
 
// Number.toString 方法将十进制数字转换为任意进制的字符串形式,同样,radix 表示进制,取值 2~36
Number.toString(radix)
(10).toString(2) //"1010" 转 2 进制
(10).toString(8) //"12" 转 8 进制
(10).toString(16) //"a" 转 16 进制
(1000).toString(36) //"rs" 转 36 进制