如何从此语句返回布尔值true或false

时间:2011-05-19 01:22:57

标签: javascript

function compare(a, b) {
    return isNaN(a) || isNaN(b) ? a > b : +a > +b;
}
var c  =  compare(10,5);
alert("C value ==?"+c);

我在理解上面的脚本时遇到了麻烦。如何从compare()返回布尔值truefalse。如何生成布尔值true。请解释一下。

3 个答案:

答案 0 :(得分:2)

return isNaN(a) || isNaN(b) ? a > b : +a > +b;

这会检查ab是否不是数字(IsNan)。如果任一测试为真,则返回a > b的结果;如果它们都不是NAN,则返回+a > +b的结果。阅读Javascript的ternary(条件)运算符的文档。

为了确保清楚,测试是:

  

如果a不是数字或b不是a   number,如果a更大则返回true   比b,否则尝试转换a和   b两者都是数字并返回是否   a大于b

请注意,整个表达式没有任何意义,因为它希望在尝试转换后返回可能不是数字的相等测试。

答案 1 :(得分:1)

返回语句有两种可能的方法来返回一个值,它们都是布尔值:

return isNaN(a) || isNaN(b) ? a > b : +a > +b;

可以返回此(布尔值)

isNaN(a)

或者这个(也是一个布尔值 - 它是一个比较运算符)

+a > +b;

答案 2 :(得分:1)

这是简单的javascript(不是jQuery)代码。

这可以改写为

if (isNaN(a) || isNaN(b)) {
   return a > b;
} else {
   return +a > +b;
}

如果任何参数不是数字(if子句),那么函数仍会尝试进行一些比较并返回结果。否则它会将它们强制转换为数字,然后比较它们。也许应该改变参数的顺序......

相关问题