Mark下js最大精确整数范围,业务中出现的疑难bug

  今天在跟后端联调中,偶然发现几个数据的id竟然同样,我就询问了下后端这是什么状况,然然后端告诉我说并无相同的id,因而开始一块儿排查问题。后端

    排查中发现,从后端拿来的数据在浏览器控制台NetWork - Response中是正常的,然而在Preview中几个数据的id变成了相同的,着实使人费解。浏览器

  而后感受应该是这个id过长的缘由,超出js能够处理的最大整数。为了证实这个猜测,在浏览器中作了如下实验。测试

  首先,js能够处理的最大整数为 9007199254740992 and 9007199254740992 (即正负253次方)。spa

  

  就算说是能够处理长度为16的整数吧,而后继续加长度,看看浏览器会怎样处理。code

  下面我输入了17位的整数,和18位的整数,发现超出16位的数字都会被处理为0,这也是今天出现这个bug的缘由。blog

  

  由于是测试数据,这些id都是后端工程师本身制造的,生产环境中是不存在16位以上长度的id的,后端修改了这些id长度问题就解决了。it

  算是工做中碰见的疑难杂症吧,本身mark,与你们分享。class

相关文章
相关标签/搜索