如何正确进行比较
How to do comparison correctly
我正在尝试检查最小值是否总是小于最大值和最小值,最大值始终是一个数字,最小值和最大值不为空。
我注意到它从不检查这一点,而是直接进入错误消息。我做错了什么?
var min=30
var max=5000;
if(isNaN(min)=="false" || isNaN(max)=="false") && (min!=""|| max!="") && (max > min))
{
document.write(min+ max);
}else
{
document.write("give error msg");
}
你应该
使用 JavaScript Number()
来检查某些东西是否是数字。 无论如何,NaN
评估为 false,因此您只需检查这是否满足您的所有要求,而不是某些要求。如果min
不是数字,则失败,如果max
不是数字,则失败,如果min
小于max
,则失败。这看起来像这样:
var min = 30
var max = 5000;
// You only need to check if its a Number using the default Number function which will
// return NaN if its not and convert if it can be converted.
if(Number(min) && Number(max) && (min <= max)){
document.write(min + ", " + max);
} else {
document.write("Min or Max is not a number or Min is bigger than Max");
}
现在,正如一些人指出的那样,这将有一些边缘情况,所以这里有一些可以解决它的方法:
function getNumber(n){
// Take a number 'n' and return 0 if false if its not a number.
return Number(n) === 0 ? 0 : Number(n) || false;
// Broken down this means:
// Check if n is the number 0. Yes? Return 0. No? Check if n is a number. Yes? Return that. No? Return false;
}
if(getNumber(min) !== false && getNumber(max) !== false && (min <= max)){
document.write(min + ", " + max);
}
或者正如@IsmaelMigual评论中所说,通过除以 1 然后比较来简化它:
function isNumber(n){
// Returns true or false
return n / 1 == n / 1;
}
if(isNumber(min) && isNumber(max) && (min <= max)){
document.write(min + ", " + max);
}
if(isNaN(min)=="false"
将始终返回false,因为该函数将返回true
或false
,但永远不会"false"
(这是一个字符串)。
此外,您应该在第一个括号中使用"and"。
试试这个:
if(! isNaN(min) && ! isNaN(max)) &&
(...
编辑:试试这个条件:
if((! isNaN(min) && ! isNaN(max)) && max> min && min > 0 ) {
(...
相关文章:
- 元素值比较的结果不正确
- JS/JQuidecure比较的正确语法
- 如何正确进行比较
- 比较两个日期并以正确的格式返回
- 日期对象未比较正确
- Javascript字符串比较不显示正确的结果
- JavaScript 比较运算符未正确评估用户输入
- 比较两个对象不会得到正确的结果
- 短手(类型不同)是字符串的正确/错误比较的好方法
- 正确比较Date对象
- Jquery变量的比较不正确
- 我正试图从错误消息中获取文本并与预期进行比较,但它返回“0”;空”;由于don'没有正确的css路径或html
- 在javascript中比较位置的正确方法
- 在运行时检查是否有正确的日期类型,以便进行比较
- ' if (condition = value) '是进行比较的正确语法吗?
- 在纯/原生JavaScript中比较两个对象的正确代码
- 如何在javascript中比较提交的测验答案数组与正确答案数组
- 没有正确比较数组中的浮点数
- 在Titanium Mobile中,日期不能正确比较
- Angularjs的ngDisabled比较表达式不能正确计算