eval在JavaScript中如何工作?为什么eval('011 + 011')不等于eval('11 +11')

时间:2019-11-19 01:42:53

标签: javascript

因此,我的理解是eval()可以采用作为数学表达式的字符串并返回该表达式的值。为什么要在数字前加一个“ 0”,例如将“ 11”更改为“ 011”会更改结果吗?

1 个答案:

答案 0 :(得分:2)

因为011是一个八进制文字,它等于十进制9(9 + 9等于18)。删除0前缀将使该值成为十进制,因此结果为十进制11(11 + 11给出22)。

您可以从节点REPL尝试

> eval('011')
9

如果启用严格模式,它将不允许八进制文字。 related