Javascript eval在这里是如何工作的,或者它是如何工作的?

Javascript eval在这里是如何工作的,或者它是如何工作的?,javascript,Javascript,执行eval(0+'1')时=>1。我希望0+1会给我1,3会被认为是字符串&o/p=>13。但是,为什么没有发生呢 鉴于 eval(0+'1'+3) => 11 (???) 您正在创建字符串“013”,该字符串作为JavaScript整数文本进行计算。以0开头的整数文本被解释为基数8(八进制),因此您的数字是8+3,即11 只有以非零数字开头的整数文字才以10为基数进行解释。您希望将数字0和字符串'1'串联在一起将被串接为字符串,但串联后将作为数字进行计算,然后再次转换以给出字符串结果

执行eval(0+'1')时=>1。我希望0+1会给我1,3会被认为是字符串&o/p=>13。但是,为什么没有发生呢

鉴于

eval(0+'1'+3) => 11 (???)

您正在创建字符串“013”,该字符串作为JavaScript整数文本进行计算。以
0
开头的整数文本被解释为基数8(八进制),因此您的数字是8+3,即11


只有以非零数字开头的整数文字才以10为基数进行解释。

您希望将数字
0
和字符串
'1'
串联在一起将被串接为字符串,但串联后将作为数字进行计算,然后再次转换以给出字符串结果

如果你想一想,那就没什么意义了。没有理由将字符串计算为数字,此外,如果将其计算为数字,则结果也将是数字,而不是字符串


该数字被转换为一个字符串,以便可以连接到另一个字符串,因此结果与
'0'+'1'
的结果相同,即字符串
'01'
。不需要转换为数字,然后再转换回字符串。

读取整数文本,第“八进制”小节。
eval(1+'1'+3) => 113