当前位置: 首页 > article >正文

深入解析:parseInt 到底有几个参数?

深入解析parseInt到底有几个参数parseInt的签名parseInt函数接收两个参数parseInt(string,radix)string(必填)要被解析的值。如果参数不是字符串会先转换为字符串。radix(可选)表示进制的基数2 到 36 之间的整数。通俗比喻parseInt就像一个翻译官。string是他要翻译的外语句子。radix是你告诉他的“方言规则”是二进制、十进制还是十六进制。如果你不告诉他是哪种方言省略radix他就会根据句子的开头猜测比如看到0x猜十六进制看到0可能猜八进制或十进制取决于环境。 目录️ 参数详解string与radix 经典陷阱map与parseInt的爱恨情仇️‍♂️ 隐式转换非字符串会发生什么⚠️ 常见误区与最佳实践 总结1. ️ 参数详解string与radix✅ 第一个参数string截断规则parseInt会从左到右解析字符直到遇到非数字字符为止。忽略空格前导空格会被忽略。返回值如果第一个字符就不能被解析为数字返回NaN。parseInt(123px);// 123 (遇到 p 停止)parseInt(px123);// NaN (第一个字符 p 无效)parseInt( 123 );// 123 (忽略前后空格)parseInt(12.34);// 12 (小数点 . 是非数字字符停止)✅ 第二个参数radix(进制)这是最容易出错的地方。范围2 到 36。默认行为ES5 之前 vs ES5 之后旧浏览器/非严格模式如果字符串以0开头可能被解析为八进制基数 8。parseInt(010);// 8 (旧环境)现代标准 (ES5)如果省略radix或以0开头默认视为十进制基数 10。parseInt(010);// 10 (现代浏览器)十六进制如果字符串以0x或0X开头且省略radix则解析为十六进制。parseInt(0x10);// 16黄金法则永远不要省略第二个参数始终显式指定radix通常是10。2. 经典陷阱map与parseInt的爱恨情仇这是前端面试中出现频率最高的“坑”。[1,2,3].map(parseInt);// 结果是什么// A. [1, 2, 3]// B. [1, 2, 3]// C. [1, NaN, NaN]// D. [1, 0, 0]正确答案是 C:[1, NaN, NaN]❓ 为什么Array.prototype.map的回调函数接收三个参数(element, index, array)。而parseInt接收两个参数(string, radix)。当parseInt作为回调传入map时它实际上是这样被调用的第一次迭代element 1,index 0调用parseInt(1, 0)注意当radix为0、undefined或null时parseInt会将其视为10除非字符串有前缀。结果1第二次迭代element 2,index 1调用parseInt(2, 1)错误基数1是无效的最小是 2。结果NaN第三次迭代element 3,index 2调用parseInt(3, 2)错误在二进制基数 2中只有0和1是有效数字。3是非法字符。结果NaN✅ 如何修复使用箭头函数显式传递参数只传第一个参数给parseInt并固定基数为 10。// ❌ 错误[1,2,3].map(parseInt);// ✅ 正确[1,2,3].map(strparseInt(str,10));// [1, 2, 3]// ✅ 更推荐使用 Number 或 Unary [1,2,3].map(Number);// [1, 2, 3]3. ️‍♂️ 隐式转换非字符串会发生什么如果第一个参数不是字符串parseInt会先调用ToString()将其转换为字符串然后再解析。这会导致一些反直觉的结果。陷阱科学计数法parseInt(0.0000001);// 1. 0.0000001 转换为字符串 - 1e-7// 2. parseInt(1e-7, 10) - 解析 1遇到 e 停止// 3. 结果 - 1parseInt(1000000000000000000000);// 1. 转换为字符串 - 1e21// 2. parseInt(1e21, 10) - 解析 1遇到 e 停止// 3. 结果 - 1结论不要对数字类型直接使用parseInt如果你想取整请使用Math.floor()、Math.ceil()或Math.round()。parseInt的设计初衷是解析字符串。4. ⚠️ 常见误区与最佳实践❌ 误区 1用parseInt做数学取整// ❌ 危险parseInt(15.99);// 15parseInt(-15.99);// -15 (看起来像 trunc但本质不同)// ✅ 推荐Math.trunc(15.99);// 15Math.floor(15.99);// 15❌ 误区 2忽略radix// ❌ 不推荐parseInt(10);// ✅ 推荐parseInt(10,10);✅ 最佳实践总结始终指定基数parseInt(str, 10)。只用于字符串确保输入是字符串类型。如果是数字先用String()转换或者直接用数学方法取整。避免在map/forEach中直接引用使用箭头函数包装。替代方案如果只是想把字符串转数字且不需要处理进制推荐使用Number(str)或str。它们更严格不会截断123px这种非法格式会返回NaN从而更容易发现数据错误。Number(123px);// NaN (严格报错好过静默失败)parseInt(123px,10);// 123 (宽松可能掩盖数据脏污) 总结特性说明参数个数2 个string,radixRadix 默认值现代 JS 中若无前缀默认为 10若有0x默认为 16。建议永远显式传入 10。解析规则从左到右遇到非数字字符即停止。Map 陷阱map会传入index作为radix导致错误。务必包裹箭头函数。数字输入先将数字转为字符串再解析可能导致科学计数法问题。不建议对数字用 parseInt。 博主寄语parseInt是一个“老派”的函数它的宽容性既是优点也是缺点。在现代开发中如果你需要严格的类型转换请优先考虑Number()。如果你需要解析带有单位的字符串如100pxparseInt依然是神器但别忘了带上你的“安全带”——基数 10。希望这篇文档能帮你彻底避开parseInt的坑如果有疑问欢迎在评论区留言。喜欢这篇文章吗记得点赞、收藏、转发哦❤️

相关文章:

深入解析:parseInt 到底有几个参数?

🔢 深入解析:parseInt 到底有几个参数? 🤔 parseInt 的签名 parseInt 函数接收 两个 参数: parseInt(string, radix)string (必填):要被解析的值。如果参数不是字符串,会先转换为字符串。rad…...

别再手动算字模了!用Python+STM32CubeMX快速生成8*8点阵动画,效率提升10倍

用PythonSTM32CubeMX自动化生成8*8点阵动画:从手动编码到智能设计的跨越 每次看到那些闪烁的8*8点阵动画,你是否想过背后的开发者要花多少时间手动计算每个像素的十六进制值?传统开发流程中,工程师需要先在纸上绘制图案&#xff0…...

JS 侦探社:如何精准判断一个对象是不是数组?

🕵️‍♂️ JS 侦探社:如何精准判断一个对象是不是数组? 🤔 为什么判断数组这么难? 在 JavaScript 中,数组本质上也是一种对象。 console.log(typeof []); // "object" console.log(typeof {}…...

reverse-shell在企业安全测试中的最佳实践:风险评估与合规使用

reverse-shell在企业安全测试中的最佳实践:风险评估与合规使用 【免费下载链接】reverse-shell Reverse Shell as a Service 项目地址: https://gitcode.com/gh_mirrors/re/reverse-shell reverse-shell作为一款开源的"Reverse Shell as a Service"…...

探究MicroBlaze软核在DDR3中运行sleep函数异常延迟的根源与规避策略

1. 现象描述:从BRAM到DDR3的诡异延迟 第一次把MicroBlaze程序从BRAM搬到DDR3运行时,我遇到了一个让人抓狂的问题:原本精准的sleep(1)延时竟然变成了长达数秒的卡顿。这个现象特别容易在Vitis环境下开发网络应用(比如LwIP协议栈&am…...

《QGIS空间数据处理与高级制图》005:第三方预处理插件推荐

作者:翰墨之道,毕业于国际知名大学空间信息与计算机专业,获硕士学位,现任国内时空智能领域资深专家、CSDN知名技术博主。多年来深耕地理信息与时空智能核心技术研发,精通 QGIS、GrassGIS、OSG、OsgEarth、UE、Cesium、OpenLayers、Leaflet、MapBox 等主流工具与框架,兼具…...

CANN/asc-devkit asc_copy_gm2l1 API

asc_copy_gm2l1 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode…...

MarkdownReader:重构浏览器文档阅读体验的渐进式渲染引擎

MarkdownReader:重构浏览器文档阅读体验的渐进式渲染引擎 【免费下载链接】markdownReader markdownReader is a extention for chrome, used for reading markdown file. 项目地址: https://gitcode.com/gh_mirrors/ma/markdownReader 在当今技术文档创作与…...

浙大推出让AI会「导演」的角色扮演框架!四通道消息沉浸式交互|ACL 2026

AdaMARP团队 投稿量子位 | 公众号 QbitAIAI能实现真正的沉浸式扮演了。大语言模型在角色扮演任务上进展迅速,但现有系统往往缺乏沉浸感和适应性:环境信息未被充分建模,场景与角色也多为静态,难以支撑多角色调度、场景切换、动态引…...

保姆级教程:手把手教你下载、解压与解析ILSVRC2015 VID数据集(附Python脚本)

计算机视觉实战:ILSVRC2015 VID数据集处理全流程指南 当你第一次打开ILSVRC2015 VID数据集时,可能会被它的规模吓到——超过100万张图像、数千个视频序列和复杂的XML标注结构。这份指南将带你从零开始,像处理日常项目一样轻松驾驭这个庞然大…...

如何用Layerdivider在3步内将单张图片智能分层为PSD文件

如何用Layerdivider在3步内将单张图片智能分层为PSD文件 【免费下载链接】layerdivider A tool to divide a single illustration into a layered structure. 项目地址: https://gitcode.com/gh_mirrors/la/layerdivider 你是否曾面对一张精美的插画,想要修改…...

Intel Wi-Fi 6 AX201网卡间歇性断连?华硕飞行堡垒8用户必看的节能模式与驱动管理避坑指南

Intel Wi-Fi 6 AX201网卡间歇性断连?华硕飞行堡垒8用户必看的节能模式与驱动管理避坑指南 当你的华硕飞行堡垒8笔记本突然无法连接Wi-Fi,设备管理器里Intel Wi-Fi 6 AX201网卡显示黄色感叹号并提示"代码10"错误时,这往往不是简单的…...

别再乱用STOP模式了!STM32L4三种STOP模式深度对比与选型实战

STM32L4低功耗设计实战:STOP模式选型与能效优化全解析 在物联网终端设备与便携式仪器开发中,每微安电流的节省都直接关系到产品的市场竞争力。最近为一个农业传感器项目做方案评审时,发现团队在STOP模式选择上存在严重误区——工程师们习惯性…...

别再用Excel解方程了!手把手教你用C++实现高斯消元法(附洛谷P3389模板题实战)

从数学公式到AC代码:高斯消元法的竞赛级C实现 在算法竞赛和科学计算中,线性方程组求解是一个无法回避的经典问题。当你面对洛谷P3389这样的模板题时,是否曾困惑于如何将教科书上的数学步骤转化为高效的C代码?本文将彻底打破理论与…...

掌握智能游戏存档管理:实现高效跨平台游戏进度迁移

掌握智能游戏存档管理:实现高效跨平台游戏进度迁移 【免费下载链接】XGP-save-extractor Python script to extract savefiles out of Xbox Game Pass for PC games 项目地址: https://gitcode.com/gh_mirrors/xg/XGP-save-extractor 你是否曾在Xbox Game Pa…...

【信息科学与工程学】【通信工程】第四十三篇 骨干网方案设计-02跨境网络

一、方案 1.1 整体方案设计概要 设计的云网融合方案,综合考虑其全球互联需求、安全合规性、性能优化及跨国运营挑战: ​1.1.1、需求分析 ​网络互联需求:​​ ​国内互通:​​ 安全、稳定、低延迟连接中国大陆(严格合规要求)。 ​国际互通:​​ 高性能连接美国(东西海…...

如何用dnGrep进行代码搜索:程序员必备的10个搜索模式

如何用dnGrep进行代码搜索:程序员必备的10个搜索模式 【免费下载链接】dnGrep Graphical GREP tool for Windows 项目地址: https://gitcode.com/gh_mirrors/dn/dnGrep dnGrep是一款强大的Windows图形化GREP搜索工具,专为开发者和技术用户设计。这…...

Ciao故障排除终极指南:10个常见问题与解决方案大全

Ciao故障排除终极指南:10个常见问题与解决方案大全 【免费下载链接】ciao HTTP checks & tests (private & public) monitoring - check the status of your URL 项目地址: https://gitcode.com/gh_mirrors/ci/ciao Ciao是一款强大的HTTP(S) URL监控…...

基于 HarmonyOS 6.0 的空气质量监测页面实战:声明式 UI 构建与跨端开发深度解析

基于 HarmonyOS 6.0 的空气质量监测页面实战:声明式 UI 构建与跨端开发深度解析 前言 随着 HarmonyOS 生态不断完善,HarmonyOS 6.0 在分布式能力、ArkUI 声明式开发、跨端协同以及应用性能方面都有了明显提升。相比传统 Android 开发模式,Har…...

保姆级教程:用树莓派+罗技C310搭建简易监控(附fswebcam完整参数表)

树莓派罗技C310搭建智能监控系统的完整实践指南 在智能家居和远程办公日益普及的今天,搭建一个低成本、高灵活性的监控系统已经成为许多技术爱好者的需求。本文将带你从零开始,利用树莓派和罗技C310 USB摄像头构建一个功能完善的监控解决方案。不同于市面…...

CANN/asc-devkit SPM缓冲区写入API

WriteSpmBuffer 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode…...

Springboot+Vue3|毕业设计美食分享平台(源码)

目录 一、项目背景 二、技术介绍 三、功能介绍 四、代码设计 五、系统实现 一、项目背景 在移动互联网与社交媒体深度融合的时代背景下,美食已不再仅仅满足人们的饱腹之需,更演变为一种重要的社交媒介与文化符号。打开小红书、抖音等热门应用&…...

CANN Ascend C SetStride API

SetStride 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode.com/…...

智能水表、血糖仪、工业HMI:STM32L152ZET6的超低功耗MCU应用版图

STM32L152ZET6:带LCD驱动的超低功耗Cortex-M3旗舰MCU 在电池供电的工业仪表、医疗设备和消费电子产品中,微控制器的功耗与集成度往往是决定产品可行性的关键因素。STM32L152ZET6是意法半导体STM32 L1系列中的高端型号,采用2020mm的LQFP-144封…...

别再死记公式了!用Python+LTspice快速搞定LC滤波器设计(附仿真文件)

用PythonLTspice实现LC滤波器设计的工程化实践 在传统电子工程教学中,LC滤波器设计往往陷入繁琐的公式推导和手工计算泥潭。当学生终于理解完所有理论公式,准备动手实践时,却发现自己被复杂的参数计算和反复的电路调试所困扰。这种理论与实践…...

电子设备散热风扇控制技术详解与应用

1. 电子设备散热风扇控制技术概述现代电子设备正朝着小型化、高性能方向发展,随之而来的散热问题日益突出。以笔记本电脑为例,其厚度从十年前的30mm缩减到如今的15mm以下,但CPU功耗却从15W提升到45W甚至更高。这种"体积缩小、功耗增加&q…...

CANN/asc-devkit单核形状API文档

SetSingleShape 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode…...

别再只调API了!微信支付Native/JSAPI开发中,订单号生成与回调处理的5个实战避坑点

微信支付开发实战:订单与回调的五个关键陷阱与解决方案 在移动支付领域,微信支付作为主流平台之一,其开发文档看似详尽,但实际落地时仍存在诸多"暗坑"。许多开发者过度关注支付接口调用本身,却忽视了订单生成…...

从零部署Claude 3.5 Sonnet私有化实例:NVIDIA A10/A100实测吞吐对比、Token缓存优化与RAG集成避坑指南(含GitHub开源脚本)

更多请点击: https://intelliparadigm.com 第一章:Claude 3.5 Sonnet新功能详解 Anthropic 正式发布的 Claude 3.5 Sonnet 在推理速度、多模态理解与工具调用能力上实现了显著跃升。相比前代,其上下文窗口稳定支持 200K tokens,…...

shell脚本案例(dns主从服务配置)

dns主从服务配置主服务器shell脚本#!/bin/bashset -euo pipefail#configuration parametersMASTER_IP"192.168.153.131" DOMAIN"web.com" REV_ZONE"153.168.192.in-addr.arpa" SLAVE_IP"192.168.153.132"#tool parametersinfo(){ echo…...