如果使用的数字从0开始,则在评估数学表达式时,Javascript eval会给出错误的输出

时间:2013-09-05 20:17:23

标签: javascript eval

所以当我使用:

eval('03*3');

我应该得到9分。但是当我使用:

eval('033*3');

我得到81而不是99.我确信这个结果有一个很好的解释,但我找不到答案。有人可以解释一下吗?

1 个答案:

答案 0 :(得分:9)

在JavaScript中,与C和C ++一样,以零开头的数字常量被解释为base-8(八进制)值。因此033是十进制27(3 * 8 + 3)。您的第一个示例有效,因为03(八进制3)与十进制3相同,因为3是3.多位数值将关闭。