了解Javascript中的隐式转换

Kir*_*ace 3 javascript

我在传递一个参数时遇到了一个麻烦的JavaScript错误,但是当它被收到时,它就完全不同了.我修好了,但想知道发生了什么事以供将来参考.

我应该作为参数传递的是'0616'(带引号).我实际通过的是0616(没有引号).

因此,当它被收到时,发生了某种隐式数字转换,它被收到为398.我理解隐式和显式转换,但是发生了什么事情将0616转变为398.领先的零似乎与某些事情有关因为我通过的其他值在最重要的数字中非零是幸存的.只有从零开始的那些?

但398和'0616'之间有什么关系?

有任何想法吗?

Mic*_*sky 5

啊,javascript的神奇世界!!

任何以0开头的数字文字都被视为八进制数.

一个hacky解决方法是

parseInt('0616', 10)
Run Code Online (Sandbox Code Playgroud)