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

JavaScript代码高尔夫:判断变量存储数字的最短写法

JavaScript代码高尔夫:判断变量为数字(兼容0)的最短写法

场景前提

已知待判断变量x只会是两种类型:undefined或者数字,不存在空字符串、null、布尔值等其他会干扰真假判断的值。核心需求是判断指定位置存的是数字(必须兼容数字0,不能把0误判为无效值)还是undefined。
目前已知两种常规实现:

// 显式判断0,共7个字符
x||x==0

// 基于isNaN判断,共8个字符
!isNaN(x)

就算反转if-else逻辑省掉!取反符,整体长度还是比显式判0的写法长,还有很大压缩空间。

最短实现(3字符)

直接用1/x作为判断条件即可,完全适配当前场景:

if(1/x) {
  // x为数字(包含0、正负整数、浮点数)
} else {
  // x为undefined
}

判定逻辑说明

这个写法利用了JS的类型转换和除法运算特性,在当前约束下没有判定误差:

  • 当x是数字0(包括-0)时,1/x会得到Infinity/-Infinity,转布尔值为true,完美绕开0是假值的问题
  • 当x是其他非NaN数字时,1/x得到非零数值,转布尔值为true
  • 当x是undefined时,1/undefined返回NaN,转布尔值为false
  • 当x是NaN时,1/NaN返回NaN,转布尔值为false,和原有x||x==0的判定表现完全一致

注意:这个写法强依赖题目给出的类型约束,如果变量可能出现null(1/null返回Infinity会误判)、字符串等其他类型,不能直接使用。

长度对比

实现写法字符长度
1/x3
x||x==07
!isNaN(x)8

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 09:54:23