function compare(a, b) {
return isNaN(a) || isNaN(b) ? a > b : +a > +b;
}
var c = compare(10,5);
alert("C value ==?"+c);
我在理解上面的脚本时遇到了麻烦。如何从compare()返回布尔值true
或false
。如何生成布尔值true
。请解释一下。
答案 0 :(得分:2)
return isNaN(a) || isNaN(b) ? a > b : +a > +b;
这会检查a
或b
是否不是数字(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子句),那么函数仍会尝试进行一些比较并返回结果。否则它会将它们强制转换为数字,然后比较它们。也许应该改变参数的顺序......