为什么javascript与以下代码混淆?
var a = 10; //will return output 10
var b = 010; //will return output 8
答案 0 :(得分:2)
010是八进制值8的八进制表示。
如果您不了解数字系统,基本上有4种方法可以在编程中表示数字
详细了解数字系统here
如果你想在JavaScript中表示一个八进制数,你可以在任何值上加0,如果你想用十六进制表示一个值,可以通过将0x放在任何数字的前面来实现。
例如,
var a= 010; //8 in decimal
var b= 0xF; //15 in decimal
详细了解JavaScript here
中的数字答案 1 :(得分:1)
从C(1978)的最早版本开始,前导零已用于表示八进制文字。
这已经延续到了C ++,Java,甚至是Javascript。
一些更勇敢的语言(例如Python 3)正在向0o
转换为八进制文字,因为现在领先的0表示法弊大于利。
答案 2 :(得分:0)
如果数字以0结尾,则Javascript将解释为八进制数。 永远不要写一个前导零的数字(如07)。 一些JavaScript版本将数字解释为八进制,如果它们用前导零写入。
答案 3 :(得分:0)
问题是,您使用的是宽松模式,在大多数环境中,在宽松模式下,前导0
后跟数字表示旧八进制文字。在八进制中,010
(即“ 10八进制”)是数字8。八进制是8的底数,因此最右边的数字是“ ones”列,其最左边的数字是“ eights”列,其最左边的数字是“ 64”(8 x 8)列,依此类推(就像十进制一样,最右边的列是“ 1”,左边的下一个是“十”,左边的下一个是“百”,依此类推)
Octal Decimal ------ ------- 0 0 1 1 ... 7 7 10 8 11 9 12 10 13 11 14 12 15 13 16 14 17 15 20 16 ...
要修复它:
使用strict mode(顶部为"use strict";
和/或使用默认情况下严格的模块),并且
请勿使用0
开始十进制文字。 :-)