当前位置:首页 > JavaScript

js parseint实现

2026-04-06 03:50:57JavaScript

JavaScript parseInt 实现原理

JavaScript 的 parseInt 函数用于将字符串转换为整数。其基本语法为:

parseInt(string, radix);

string 是要解析的字符串,radix 是进制基数(2 到 36)。

实现步骤

  1. 处理空字符串
    如果输入字符串为空,返回 NaN

  2. 处理进制参数
    如果未提供 radix 或为 0,默认按十进制解析。
    如果 radix 小于 2 或大于 36,返回 NaN

  3. 跳过前导空格
    忽略字符串开头所有空白字符(如空格、制表符)。

  4. 处理符号
    检查第一个非空格字符是否为 +-,记录符号。

  5. 处理进制前缀
    如果 radix 为 16,跳过 0x0X 前缀。
    如果 radix 未指定且字符串以 0x0X 开头,按十六进制解析。

  6. 逐字符解析
    从有效字符开始,逐个字符转换为数字值。
    遇到无法识别的字符时停止解析。

  7. 返回结果
    将解析的数字乘以符号,返回最终结果。如果未解析任何数字,返回 NaN

代码实现示例

function customParseInt(string, radix) {
    if (typeof string !== 'string' && typeof string !== 'number') {
        return NaN;
    }

    string = String(string).trim();
    if (string.length === 0) return NaN;

    radix = radix || 10;
    if (radix < 2 || radix > 36) return NaN;

    let sign = 1;
    let index = 0;

    if (string[index] === '+') {
        index++;
    } else if (string[index] === '-') {
        sign = -1;
        index++;
    }

    if (radix === 16 && string.substr(index, 2).toLowerCase() === '0x') {
        index += 2;
    }

    let result = 0;
    let anyDigitParsed = false;

    while (index < string.length) {
        const char = string[index].toLowerCase();
        let digit;

        if (char >= '0' && char <= '9') {
            digit = char.charCodeAt(0) - '0'.charCodeAt(0);
        } else if (char >= 'a' && char <= 'z') {
            digit = char.charCodeAt(0) - 'a'.charCodeAt(0) + 10;
        } else {
            break;
        }

        if (digit >= radix) break;

        result = result * radix + digit;
        anyDigitParsed = true;
        index++;
    }

    return anyDigitParsed ? sign * result : NaN;
}

注意事项

  • parseInt 会截断浮点数的小数部分,例如 parseInt('123.45') 返回 123
  • 如果字符串以 0 开头且未指定 radix,某些浏览器会按八进制解析(已弃用)。
  • 始终明确指定 radix 参数以避免意外行为。

数学公式

解析过程中数字的计算公式为:
result = sign × (d₀ × radixⁿ⁻¹ + d₁ × radixⁿ⁻² + ... + dₙ₋₁ × radix⁰)
其中:

js parseint实现

  • sign 为 1 或 -1
  • dₖ 是第 k 位数字的值
  • n 是数字的总位数

标签: jsparseint
分享给朋友:

相关文章

js实现

js实现

实现 JavaScript 功能的方法 在 JavaScript 中实现特定功能通常涉及多个步骤。以下是常见的实现方法: 基础语法和变量声明 使用 let 或 const 声明变量: let co…

js实现轮播

js实现轮播

实现轮播图的基本思路 轮播图的核心逻辑是通过定时切换展示的图片或内容,通常结合左右滑动按钮和指示器(小圆点)增强交互性。以下是基于原生JavaScript的实现方法。 HTML结构 构建轮播图的HT…

js 实现倒计时

js 实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是两种常见实现方式。 使用 setInterval 实…

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

jquery js

jquery js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够更高…

js画图实现

js画图实现

使用Canvas API绘制图形 Canvas是HTML5提供的绘图API,通过JavaScript操作Canvas元素可以绘制各种图形。以下是一个简单的示例: <canvas id="myC…