本章节通过代码实例介绍一下如何判断一个变量是正数还是负数。
貌似非常简单的一个需求,其实深究起来还是有点麻烦的。
有些朋友可能感觉实在是太简单了,比如下面的代码:[JavaScript] 纯文本查看 复制代码运行代码var num = 5;
if (num > 0) {
console.log("正数");
}
貌似很简单其实漏洞很多的,如果num等于true,同样也会打印"正数"。
代码如下:[JavaScript] 纯文本查看 复制代码运行代码var num = true;
if (num > 0) {
console.log("正数");
}
下面展开来介绍一下如何判断变量的正负数:
一.判断数字的正负:[JavaScript] 纯文本查看 复制代码运行代码var num = 5;
var numStr = "5";
console.log(typeof num == "number" && !isNaN(num) && num > 0)
console.log(typeof numStr == "number" && !isNaN(numStr) && numStr > 0)
上面的代码可以验证一个数字的正负,数字字符串不行。
二.数字字符串的正负:
当然字符串无所谓正负,我们无需钻这个牛角尖。[JavaScript] 纯文本查看 复制代码运行代码var one = "5";
var two = "8.5";
var three = "8.578";
console.log(typeof one == 'string' && one.match(/^\d+((\.\d+){0,})?$/) && parseFloat(one) > 0);
console.log(typeof two == 'string' && two.match(/^\d+((\.\d+){0,})?$/) && parseFloat(two) > 0);
console.log(typeof three == 'string' && three.match(/^\d+((\.\d+){0,})?$/) && parseFloat(three) > 0);
上面的代码可以验证一个数字字符串转换为数字后的正负。
三.以上两者的综合:
很多时候可能无论是真正的数字还是字符串可能都要考虑在内,下面就来封装一下。
代码实例如下:[JavaScript] 纯文本查看 复制代码运行代码var one = 5;
var two = "8.5";
var three = "8.578";
function check(arg) {
if (typeof arg == "string") {
return !!(arg.match(/^\d+((\.\d+){0,})?$/) && parseFloat(arg) > 0)
} else if (typeof arg == "number") {
return !isNaN(arg) && arg> 0;
} else {
return "参数不正确";
}
}
console.log(check("5a"));
console.log(check(one));
console.log(check(two));
console.log(check(three));
上面的代码实现了我们的要求,更多内容可以参阅相关阅读。
相关阅读:
(1).match()参阅正则表达式match()函数一章节
(2).parseFloat()参阅javascript parseFloat()一章节。
(3).typeof参阅javascript typeof运算符一章节。