前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
首页程序员面试题库指数表示法 科学计数法 数字字面量
JavaScript值与类型

JS 里的 1e3 是什么意思?指数表示法有哪些容易踩的坑?

1e3 表示 1 乘以 10 的 3 次方,就是 1000。这是在词法层面解析的数字字面量,不是运行时做乘法。Number("1e3") 认识这种写法,但 parseInt("1e3") 只取到 1 就停了。

前端进阶之旅 · 一题精讲更新于 2026.09.29
JavaScript#值与类型
先看核心答案读代码示例
理解线索

指数表示法的三个要点

  1. 语法aEn 或 aen 表示 a 乘以 10 的 n 次方,n 可以为负
  2. 解析差异Number() 整体解析,parseInt() 遇到 e 就停
  3. 输出格式超过 21 位或小数点后超过一定位数时自动转科学计数法

parseInt(1e21) 会先把 1e21 转成字符串 "1e+21",然后从 "1" 开始解析到 "e" 停下,返回 1。

核心回答

先记住这个答案

1e3 是 JavaScript 的数字字面量写法,表示 1 乘以 10 的 3 次方,也就是 1000。e 后面的数字是 10 的指数,可以是正数也可以是负数:1e-3 就是 0.001。这种写法在词法阶段就被解析成普通数字了,和运行时写 1 * 1000 的结果一样,但它不是在做乘法运算。

  • 1e3 是 1000,1e-3 是 0.001
  • Number 能识别指数写法
  • 极大或极小的数会自动用科学计数法显示
  • 指数太大会溢出到 Infinity

指数表示法的基本规则

e 前面是底数,后面是 10 的指数。底数可以是小数,指数必须是整数,可以带正号或负号。写成大写 E 也行,1E3 和 1e3 完全等价。

几种常见写法的实际值JavaScript
console.log(1e3);       // 1 * 10^3
console.log(2.5e2);     // 2.5 * 10^2
console.log(1e-3);      // 1 * 10^(-3)
console.log(1e0);       // 1 * 10^0
console.log(1e20);      // 很大的整数
console.log(1e-7);      // 很小的小数
查看输出与解释
1000
250
0.001
1
100000000000000000000
1e-7

最后一行 1e-7 打印出来还是科学计数法,因为小数点后位数太多时 JavaScript 会自动用这种格式显示。这个格式只影响输出,值本身就是 0.0000001。 在代码里常见的用法是 6e4 表示 60000 毫秒(一分钟),1e6 表示一百万。比起写一串零,指数表示法不容易数错位数。

parseInt 和 Number 对指数的处理完全不同

这是面试里最容易答错的点。Number("1e3") 返回 1000,因为它走的是 ToNumber,能识别指数表示法。但 parseInt("1e3") 返回 1,因为 parseInt 从左往右扫描,遇到 e 这个非数字字符就停了。

对比两种解析方式JavaScript
console.log(Number('1e3'));
console.log(parseInt('1e3'));
console.log(Number('2.5e2'));
console.log(parseInt('2.5e2'));
查看输出与解释
1000
1
250
2

parseInt 不仅不认 e,连小数点也不认——parseInt('2.5e2') 只取到 2 就停了。如果你需要把字符串转成数字并且字符串里可能有指数写法,应该用 Number() 或者一元 + 运算符。 还有一个更隐蔽的坑:parseInt 接收的参数如果不是字符串,会先调用 toString()。所以 parseInt(1e21) 实际上是 parseInt("1e+21"),结果是 1 而不是预期的那个大数。当数字本身就很大,toString() 输出了科学计数法字符串,parseInt 就解析不对了。

回答前,多想一步

容易答错的地方

认为指数表示法是运行时乘法
1e3 不是先算 10 ** 3 再乘以 1。它在代码被解析时就变成了数字 1000,和字面量 1000 没有任何区别。typeof 1e3 就是 "number",不存在"指数类型"这种东西。
以为 parseInt 能处理指数字符串
parseInt("1e3") 返回 1,不是 1000。面试中如果被问到"怎么把带指数的字符串转成数字",答 parseInt 就错了,应该用 Number() 或一元 +。
试着用自己的话回答

面试官还会怎么问?

什么时候引擎会自动用科学计数法显示数字?

整数部分超过 21 位,或者小数点后连续零超过一定位数时,toString() 会自动输出科学计数法。比如 (1e21).toString() 输出 "1e+21" 而不是一长串数字。这只是显示格式的选择,值本身不变。

指数太大会怎样?

超过双精度浮点数能表示的范围就会溢出到 Infinity。1e308 还能表示,1e309 就变成 Infinity 了。反过来,1e-324 左右是最小的正数,再小就变成 0。

0.1 + 0.2 的精度问题和指数表示法有关系吗?

没有直接关系。0.1 + 0.2 !== 0.3 是因为十进制小数在二进制浮点里无法精确表示,和指数表示法这种语法无关。不过理解 IEEE 754 的指数和尾数结构有助于搞清楚为什么会有精度误差。

从一道题,走向一组知识

把知识连起来

值与类型

JS 里什么运算会产生 Infinity?它参与计算时有哪些特殊行为?

指数太大就溢出到 Infinity,比如 1e309 已经超过双精度上限。

值与类型

JS 的 || 和 && 返回的到底是布尔值还是原值?

|| 常用于给数值设默认值,但 0 会被当成假值覆盖掉,和指数表示法无关但容易同时踩坑。

参考资料

  • JavaScript:值与类型参考资料

示例用于理解所注明的运行环境与边界;延伸学习可结合原文中的更多案例。

本题目录
  1. 先记住这个答案
  2. 指数表示法的基本规则
  3. parseInt 和 Number 对指数的处理完全不同
  4. 容易答错的地方
  5. 面试官还会怎么问
  6. 把知识连起来
读懂,再试着讲出来

先看核心答案,再读代码。最后展开追问,检查自己有没有遗漏边界。

试着回答追问
浏览全部面试题理解原理,也关注真实的使用场景。回到顶部 ↑