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

  今天在跟后端联调中,偶然发现几个数据的id居然一样,我就询问了下后端这是什么情况,然而后端告诉我说并没有相同的id,于是开始一起排查问题。

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

  然后感觉应该是这个id过长的原因,超出js可以处理的最大整数。为了证明这个猜想,在浏览器中做了以下实验。

  首先,js可以处理的最大整数为 ?9007199254740992 and 9007199254740992 (即正负2的53次方)。

  

  就算说是可以处理长度为16的整数吧,然后继续加长度,看看浏览器会怎样处理。

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

  

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

  算是工作中遇见的疑难杂症吧,自己mark,与大家分享。

 

 

  

原文地址:https://www.cnblogs.com/wunan/p/8298138.html

时间: 2024-10-25 14:46:27

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

js实现随机选取[10,100)中的10个整数,存入一个数组,并排序。 另考虑(10,100]和[10,100]两种情况。

1.js实现随机选取[10,100)中的10个整数,存入一个数组,并排序. 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 </head> 7 <body> 8 <script type="text/java

iOS下JS与OC互相调用(一)--UIWebView 拦截URL

http://blog.csdn.net/u011619283/article/details/52135977 最近准备把之前用UIWebView实现的JS与原生相互调用功能,用WKWebView来替换.顺便搜索整理了一下JS 与OC 交互的方式,非常之多啊.目前我已知的JS 与 OC 交互的处理方式: * 1.在JS 中做一次URL跳转,然后在OC中拦截跳转.(这里分为UIWebView 和 WKWebView两种,去年因为还要兼容iOS 6,所以没办法只能采用UIWebView来做.) *

iOS下JS与OC互相调用(二)--WKWebView 拦截URL

在第一篇文章 iOS下JS与OC互相调用(一)中讲述了使用UIWebView拦截URL的方式来处理JS与OC交互. 由于UIWebView比较耗内存,性能上不太好,而苹果在iOS 8中推出了WKWebView. 同样的用WKWebView也可以拦截URL,做JS 与OC交互.关于WKWebView与UIWebView的对比,大家请自动百度或者google. WKWebView 拦截URL WKWebView 与 UIWebView 拦截URL 的处理方式基本一样.除了代理方法和WKWebView

转--iOS下JS与原生OC互相调用

iOS下JS与原生OC互相调用 引言 一直听说WKWebView比UIWebView强大许多,可是一直没有使用到,今天花了点时间看写了个例子,对其API的使用有所了解,为了日后能少走弯路,也为了让大家更容易学习上手,这里写下这篇文章来记录如何使用以及需要注意的地方. 温馨提示:本人在学习使用过程中,确实有此体会,WKWebView的确比UIWebView强大很多,与JS交互的能力显示增强,在加载速度上有所提升. WKWebView新特性 性能.稳定性.功能大幅度提升 允许JavaScript的N

不同浏览器下js的字符串split方法的差异

嘛,最近在各种直接拿代码调试,发现的问题可能稍微多了一点,姑且都记下来,这个随笔以后可能会不定期更新,因为相信不同浏览器之间各种差异还是很多的. 直接上代码 1 <html> 2 <head> 3 </head> 4 5 <body> 6 <script> 7 var str = "/part1/part2"; 8 var _list = str.split(/[\\/]/); 9 for(var i = 0; i <

深刻理解下js的prototype

参考 http://aralejs.org/class/docs/competitors.html, http://www.iteye.com/topic/248933,http://www.cnblogs.com/qiantuwuliang/archive/2011/01/08/1930548.html 1.使用Dog.prototype.__proto__ ? 1 2 3 4 5 6 7 8 9 10 11 function Animal() {} function Dog() {} //

IIS7下js文件启用Gzip后却不压缩的解决方法

本文转载:http://www.jb51.net/article/26340.htm IIS7下js文件启用Gzip后却不压缩的解决方法IIS7已经启用静态文件压缩(Gzip)但是死活不压缩,查找后发现是II7下MIME类型设置问题 将.js的MIME类型设置为application/javascript 再查看页面,已经启用了Gzip. 不过,几个天后又发现有的js文件被压缩,有的却没有. 查找原因发现是引用js文件是没有设置type <script></script> <

ThinkPHP环境下JS文件按模块部署

0.序言 一般来说,ThinkPHP的JS文件目录不是太友好:但允许修改参数确定JS的存放路径. 按照ThinkPHP的目录规范,JS文件一般视同静态资源处理,这样JS文件和视图htm文件将部署在两个完全不同的目录,即使二者属于同一应用.模块.通过Thinkphp提供的模板替换功能,配置模块的JS路径参数,可以将JS文件和普通视图文件都放在同一目录,例如Application/Module/View/目录下,这样在按应用.模块部署将变得更加便捷:两种文件所在位置比较接近,开发过程也相对比较方便(

IE下js报错 SCRIPT1028: 缺少标识符、字符串或数字

今天一个jqueryUI的插件代码在IE下不能正常运行,调试了下,不是插件的问题. 这个错误原因一般都是多了个逗号括号什么的,IE检车的比较严格. 解决办法就是小心不要写多余的逗号括号什么的,或者不用IE(...) 报错代码如下: $("#postForm").validate({ rules : { title : "required", content : { required : true<span style="color:#ff0000;&