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
相关推荐
芝士加1 小时前
Playwright vs MidScene:自动化工具“双雄”谁更适合你?
前端·javascript
Carlos_sam2 小时前
OpenLayers:封装一个自定义罗盘控件
前端·javascript
前端南玖2 小时前
深入Vue3响应式:手写实现reactive与ref
前端·javascript·vue.js
Yueyanc4 小时前
LobeHub桌面应用的IPC通信方案解析
前端·javascript
麦当_5 小时前
基于 Shadcn 的可配置表单解决方案
前端·javascript·面试
Cutey9165 小时前
使用Canvas实现实时视频处理:从黑白滤镜到高级特效
前端·javascript
前端大卫5 小时前
前端调试太痛苦?这 6 个技巧直接解决 90% 问题!
前端·javascript
小公主5 小时前
this 到底指向谁?严格模式和作用域那些坑全讲明白了
前端·javascript
鹏多多5 小时前
让网页拥有App体验?PWA 将网页变为桌面应用的保姆级教程
前端·javascript·浏览器
李三岁_foucsli6 小时前
浏览器中dom解析的过程,及js、css对其影响,图文解析
javascript·浏览器