可不可以使用 num == parseInt(num) 来判断 num 可解析为整数?
哈哈,我真是太容易遇到这种困扰了,但是真的不想因为判断个整数,引入一个大库。
需求是这样的,从 url 里取出一个参数 num
,我要判断 num
是否为正整数:
function is_int(value_raw) {
const value = parseInt(value_raw)
return value == value_raw ? value : false
}
如果返回 false,那么 value_raw
就不是整数
否则是整数,且返回值就是对应的整数类型的值
看起来比较简洁,但是我担心使用 parseInt(value_str) == value
不够严谨
因此请教一下友友们,不知道有没有什么反例
我已经测试了这些情况:
parseInt('1') == '1' // true
parseInt('-1') == '-1' // true
parseInt(NaN) == NaN // false。没错,NaN == NaN 是 false
parseInt(1.1) == 1.1 // false
parseInt('1.1') == '1.1' // false
parseInt(true) == true // false
parseInt(false) == false // false
parseInt('true') == 'true' // false
parseInt('false') == 'false' // false
但是 '1.0'
竟然也是 true,不过需求是判断 可解析为整数,所以也不算反例:
'1.0' == parseInt('1.0') // true
3 回复
num === ~~num
正则匹配
试试
Number.isInteger(+input)