记开发中遇到的两个js最大安全值问题

简介:

云栖号资讯:【点击查看更多行业资讯
在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来!


最近开发过程中发现有两种case都是因为js精度导致的问题,记录一下~

Case 1:后端要求前端对某个值限制最大long型

后端大大说线上发现一种报错case,用户输入的id超过了Java Long型最大值,因为Long类型解析异常,直接返回系统异常。后端大大希望前端能加个校验,对输入的id进行下判断,超过Long型最大值时提示下输入的id不合法,能优化用户体验。

不得不说这个要求很合理,我没有拒绝的理由。好吧,代码撸起来。我设想的是就是封一个函数,入参是个字符串数字,我判断下这个值是否超过Long型最大值。写完之后在控制台进行试验。

1

咦,为啥有几个预期返回true的却返回的false,百度之后发现是因为超过js最大安全值时出现精度丢失的问题。

再改造一波代码:

2

Case 2: 后端返回的数字超过js最大安全值

事情是这样的,在详情页前端把某个id传给了后端,提交成功之后回到了列表页,此时进入详情页时发现后端接口提示该id数据不存在。常规操作就是截图入参给后端让他看下啥情况,此时后端大大说这个id确实不在数据库里面。

纳尼,我创建的时候都提示成功了,为啥会不在数据库里面,不行,我要找证据证明我这个id是创建成功了的。

好咯,从头开始创建,打开控制台,开启Presever log,点击提交,看下入参,没问题,就是我这个id。好哒,来到列表页了,看下后端返回的数据,What!!!,这个id咋么和我创建时候传的不一样,啊啊啊,我好像找到真凶了,这看起来就是后端的锅,开森~~~截图下列表返回值和创建时的入参丢到群里,艾特下可爱的后端大大。

有人会问,为啥你创建的时候这个值显示的是正常的,哈哈哈,因为我创建的时候传的是字符串,后端存数据库的时候存的是long型。

此时不得不说一下js的最大安全值(2的53次方减1),即即9007199254740992,这个值有16位,当超过这个值时,就会出现精度丢失问题。

3

这个事情最终的处理方案就是:后端将该id的数据类型改成string。

【云栖号在线课堂】每天都有产品技术专家分享!
课程地址:https://yqh.aliyun.com/zhibo

立即加入社群,与专家面对面,及时了解课程最新动态!
【云栖号在线课堂 社群】https://c.tb.cn/F3.Z8gvnK

原文发布时间:2020-04-15
本文作者:斯人爱学习
本文来自:“掘金”,了解相关信息可以关注“掘金”

相关文章
|
1天前
|
JavaScript 前端开发 测试技术
探索现代JavaScript开发的最佳实践
本文探讨了现代JavaScript开发中的最佳实践,涵盖ES6+特性、现代框架使用、模块化与代码分割、测试驱动开发、代码质量与性能优化、异步编程、SPA与MPA架构选择、服务端渲染和静态站点生成等内容,旨在帮助开发者提升代码质量和开发效率。
|
5天前
|
Web App开发 JavaScript 前端开发
深入浅出Node.js后端开发
【10月更文挑战第36天】本文将引导您探索Node.js的世界,通过实际案例揭示其背后的原理和实践方法。从基础的安装到高级的异步处理,我们将一起构建一个简单的后端服务,并讨论如何优化性能。无论您是新手还是有经验的开发者,这篇文章都将为您提供新的视角和深入的理解。
|
10天前
|
Web App开发 存储 JavaScript
深入浅出Node.js后端开发
【10月更文挑战第31天】本文将引导你进入Node.js的奇妙世界,探索其如何革新后端开发。通过浅显易懂的语言和实际代码示例,我们将一起学习Node.js的核心概念、搭建开发环境,以及实现一个简单但完整的Web应用。无论你是编程新手还是希望拓展技术的开发者,这篇文章都将为你打开一扇通往高效后端开发的大门。
|
6天前
|
运维 监控 JavaScript
鸿蒙next版开发:分析JS Crash(进程崩溃)
在HarmonyOS 5.0中,JS Crash指未处理的JavaScript异常导致应用意外退出。本文详细介绍如何分析JS Crash,包括异常捕获、日志分析和典型案例,帮助开发者定位问题、修复错误,提升应用稳定性。通过DevEco Studio收集日志,结合HiChecker工具,有效解决JS Crash问题。
23 4
|
10天前
|
Web App开发 JavaScript 前端开发
深入浅出Node.js后端开发
【10月更文挑战第30天】本文将通过一个Node.js的简单示例,引导你进入Node.js的世界。我们将从基础概念讲起,然后一步步深入到代码实现,最后总结Node.js在后端开发中的优势和应用场景。无论你是前端开发者还是后端新手,这篇文章都将为你打开一扇了解Node.js的大门。
21 2
|
19天前
|
开发框架 JavaScript 前端开发
HarmonyOS UI开发:掌握ArkUI(包括Java UI和JS UI)进行界面开发
【10月更文挑战第22天】随着科技发展,操作系统呈现多元化趋势。华为推出的HarmonyOS以其全场景、多设备特性备受关注。本文介绍HarmonyOS的UI开发框架ArkUI,探讨Java UI和JS UI两种开发方式。Java UI适合复杂界面开发,性能较高;JS UI适合快速开发简单界面,跨平台性好。掌握ArkUI可高效打造符合用户需求的界面。
70 8
|
17天前
|
JavaScript 前端开发
javascript开发的简单的弹幕插件
这是一个原生javascript开发的简单的弹幕插件,具有美观、易用,占用的资源较低等特点,可以给弹幕设置内容、颜色、头像、链接地址等属性,鼠标悬停等,简单实用,欢迎下载!
35 5
|
18天前
|
JavaScript 安全 前端开发
探索Deno 1.x:安全JavaScript/TypeScript运行时的新篇章
【10月更文挑战第21天】Deno 1.x 是由Node.js创始人Ryan Dahl发起的项目,旨在解决Node.js的安全和模块化问题。Deno 1.x 版本带来了统一的运行时、默认安全、ES模块支持和内置TypeScript支持等新特性。其安全模型基于最小权限原则、沙箱环境和严格的远程代码执行控制,适用于Web服务器、命令行工具、桌面和移动应用及微服务开发。本文探讨了Deno 1.x的核心特性、安全模型及其在现代Web开发中的应用。
|
24天前
|
JavaScript 安全 前端开发
掌握Deno:新一代安全的JavaScript和TypeScript运行时
【10月更文挑战第15天】Deno是由Node.js创始人Ryan Dahl发起的新一代JavaScript和TypeScript运行时,旨在解决Node.js的设计问题,提供更安全、现代的开发体验。本文介绍Deno的核心特性、优势及使用方法,包括安全性、统一的运行时、现代Web标准和内置工具等,帮助开发者快速上手Deno,适用于Web开发、工具开发和教育等领域。
|
8天前
|
Web App开发 JavaScript 前端开发
探索后端开发:Node.js与Express的完美结合
【10月更文挑战第33天】本文将带领读者深入了解Node.js和Express的强强联手,通过实际案例揭示它们如何简化后端开发流程,提升应用性能。我们将一起探索这两个技术的核心概念、优势以及它们如何共同作用于现代Web开发中。准备好,让我们一起开启这场技术之旅!
19 0