js判断负整数

在司徒正美的书里看到一个判断负整数的例子

if (+n === n && !(n % 1) && n >= 0){

}

不能理解
在控制台里测试了一下

+1.1 === 1.1
>true
+1 === 1
>true

这个加号是什么作用

阅读 10.6k
3 个回答

根据 @Humphry 的方法,测试了下,原来 +- 都可以强制转换为 Number

请输入图片描述

其实我不太喜欢这种卖弄技巧的做法,可读性比较差。这么写的前提是一起工作的人都能够很好地理解这段代码,不然的话,我不喜欢这种奇技淫巧。
要我写的话,我宁愿这么写:

var isNegInt = function (n) {
    return (typeof n === 'number' && n < 0 && Number.isInteger(n));
}

然后实际要用的时候直接用:

if (isNegInt(n)) {
    //...
}

这样比较清晰。

+n === n 判断是数字
!(n % 1) 判断是整数,用Number.isInteger(x)也行
n >= 0 判断是非负

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题