如果我尝试将003050
转换为字符串,则将其转换为1576
如何在不执行此操作的情况下将003050
转换为字符串。还有其他任何可能的整数?我试过了'' + 003050
,它仍然是1576
String(003050);
"1576"
答案 0 :(得分:5)
这与转换为字符串无关。
var n = 003050;
足以make the number interpreted as octal。
您可以使用""+parseInt("3050", 8)
获得相同的结果。
只需移除前导0
即可获得号码3050
:
var n = 3050;
如果你想要一个带有前导0
的文字字符串,那么就这样做吧
var s = "003050";
答案 1 :(得分:1)
似乎你可以阅读一些关于Javascript的内容,
参考:Standard ECMA-262 5.1 Edition / June 2011
并理解原语,对象和文字等。
ECMAScript的过去版本包含了用于指定八进制文字和八进制转义序列的附加语法和语义。这些已从本版ECMAScript中删除。这个非规范性附件为八进制文字和八进制转义序列提供了统一的语法和语义,以便与一些较旧的ECMAScript程序兼容。
您拥有的内容003050
是Numeric Literal
The syntax and semantics of 7.8.3 can be extended as follows except that this extension is not allowed for strict mode code: Syntax NumericLiteral :: DecimalLiteral HexIntegerLiteral OctalIntegerLiteral OctalIntegerLiteral :: 0 OctalDigit OctalIntegerLiteral OctalDigit OctalDigit :: one of 0 1 2 3 4 5 6 7
所以,如果不使用严格模式,删除了这个语法,那么003050
(八进制)就是十进制值1576
。
如果您有'003050'
,那么您将拥有String Literal
字符串文字是用单引号或双引号括起来的零个或多个字符。每个字符可以由转义序列表示。除了结束引号字符,反斜杠,回车符,行分隔符,段落分隔符和换行符之外,所有字符都可以按字面意思显示在字符串文字中。任何字符都可能以转义序列的形式出现。
所以,你真的想使用字符串文字,不是吗?
如果您真的打算使用八进制数字文字并希望它作为字符串,那么您需要做类似的事情。
的Javascript
var x = 003050,
y = ('000000' + x.toString(8)).slice(-6);
console.log(y);
输出
003050
上