praseInt 和 逻辑或连用

这是做项目时遇到json文件转换 的一个小坑

将json 对象中的值 由字符串(数字字符串) 转换为 数值类型,如果是 转换失败 ,就返回 -1

这里的 parseInt 看起来非常简洁,但是存在一个小坑

复制代码
transformedData[fieldsToCheck[i]] = parseInt(originalValue)  || -1

由于我的数据中会牵扯很多默认配置,而在系统中,默认配置通常用 0来表示,因此在这里转换时 会将 字符串 "0" ,转换为 0

紧接着就是逻辑或处理 || 坑就来了,我的本意是用来放置NaN 的出现,所以才用||去赋值一个默认值

但是 0 在JS中默认 会表示为 false ,也就是 所有 字符串 "0" ,都会被转为 我的防空数字 -1这也就导致我了数据丢失

因此 JS 中 parseInt 和 或 判断连写 ,还是需要谨慎一些的,最好还是用 三元运算符 更合适

复制代码
transformedData[fieldsToCheck[i]] = parseInt(originalValue) !== NaN ? parseInt(originalValue) : -1
相关推荐
Dontla1 分钟前
JWT认证流程(JSON Web Token)
前端·数据库·json
雾岛听蓝1 小时前
Qt开发核心笔记:从HelloWorld到对象树内存管理与坐标体系详解
开发语言·经验分享·笔记·qt
無限進步D5 小时前
Java 运行原理
java·开发语言·入门
是苏浙5 小时前
JDK17新增特性
java·开发语言
阿里加多8 小时前
第 4 章:Go 线程模型——GMP 深度解析
java·开发语言·后端·golang
likerhood8 小时前
java中`==`和`.equals()`区别
java·开发语言·python
小李子呢02119 小时前
前端八股性能优化(2)---回流(重排)和重绘
前端·javascript
zs宝来了9 小时前
AQS详解
java·开发语言·jvm
程序员buddha10 小时前
深入理解ES6 Promise
前端·ecmascript·es6
吴声子夜歌10 小时前
ES6——Module详解
前端·ecmascript·es6