You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ClojureScript中int?、integer?与number?的区别是什么?

ClojureScript 中 int?、integer? 与 number? 的区别

三个函数均用于数值类型判断,但校验范围和严格程度差异明显,具体区别如下:

1. number?

最宽松的判断逻辑,只要是 JavaScript 的 Number 类型实例就返回 true,覆盖所有数值形式:

  • 整数:(number? 1) ;=> true
  • 浮点数:(number? 1.5) ;=> true
  • 特殊数值:(number? js/NaN) ;=> true、(number? js/Infinity) ;=> true

2. integer?

校验数值是否为整数型数值,不限制位数,但会排除非整数值的 Number 类型:

  • 任意位数的整数:(integer? 1) ;=> true、(integer? 2147483648) ;=> true
  • 整数值的浮点数:(integer? 1.0) ;=> true(数值本质为整数)
  • 非整数值:(integer? 1.5) ;=> false、(integer? js/NaN) ;=> false、(integer? js/Infinity) ;=> false

3. int?

最严格的判断逻辑,仅当数值是32位有符号整数时返回true,范围为 -2^31(-2147483648)到 2^31-1(2147483647)之间的整数:

  • 32位范围内的整数:(int? 1) ;=> true、(int? -2147483648) ;=> true
  • 超出32位范围的整数:(int? 2147483648) ;=> false
  • 范围内的整数值浮点数:(int? 1.0) ;=> true
  • 非整数值或特殊数值:(int? 1.5) ;=> false、(int? js/NaN) ;=> false

核心对比总结

  • number?:判断是否为 Number 类型,不区分具体数值形式
  • integer?:判断数值是否为整数(不限位数),排除非整数值
  • int?:判断数值是否为32位有符号整数,是integer?的子集

内容的提问来源于stack exchange,提问作者hata

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 15:55:01