Javascript 该语句如何返回布尔值true或false

Javascript 该语句如何返回布尔值true或false,javascript,Javascript,我很难理解上面的脚本。如何从compare()返回布尔值true或false。布尔值是如何生成的true是如何形成的。请解释。返回语句有两种可能的方式返回值,它们都是布尔值: 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
是如何形成的。请解释。

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

function compare(a, b) {
    return isNaN(a) || isNaN(b) ? a > b : +a > +b;
}
var c  =  compare(10,5);
alert("C value ==?"+c);
无法返回此值(布尔值)

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


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

function compare(a, b) {
    return isNaN(a) || isNaN(b) ? a > b : +a > +b;
}
var c  =  compare(10,5);
alert("C value ==?"+c);
无法返回此值(布尔值)

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

这是纯javascript(不是jQuery)代码

这可以改写为

+a > +b;
如果任何参数不是数字(If子句),则函数仍将尝试进行一些比较并返回结果。否则,它会将它们强制成数字,然后进行比较。也许应该更改参数的顺序…

这是纯javascript(不是jQuery)代码

if (isNaN(a) || isNaN(b)) {
   return a > b;
} else {
   return +a > +b;
}
这可以改写为

+a > +b;
如果任何参数不是数字(If子句),则函数仍将尝试进行一些比较并返回结果。否则,它会将它们强制成数字,然后进行比较。也许参数的顺序应该改变

if (isNaN(a) || isNaN(b)) {
   return a > b;
} else {
   return +a > +b;
}
这将检查
a
b
是否不是数字(
IsNan
)。如果任一测试为真,则返回
a>b
的结果;如果两者都不是NAN,则返回
+a>+b
的结果。阅读Javascript(条件)操作符的文档

为了确保清楚,测试是:

如果a不是数字或b不是a 数字,如果a大于,则返回true 而不是b,否则尝试转换a和 b同时返回数字和 a大于b

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

这将检查
a
b
是否不是数字(
IsNan
)。如果任一测试为真,则返回
a>b
的结果;如果两者都不是NAN,则返回
+a>+b
的结果。阅读Javascript(条件)操作符的文档

为了确保清楚,测试是:

如果a不是数字或b不是a 数字,如果a大于,则返回true 而不是b,否则尝试转换a和 b同时返回数字和 a大于b


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

条件写得正确吗?它似乎在说,如果a或b不是数字,如果a大于b,则返回true,这似乎没有意义,或者我在这里遗漏了什么?条件写得正确吗?它似乎在说,如果a或b不是数字,如果a大于b,则返回true,这似乎没有意义,或者我在这里遗漏了什么?有没有提到jQuery?:)@亚历克斯:这个问题最初被标记为
jquery
jqueryui
。有没有提到jquery呢?:)@亚历克斯:这个问题最初被标记为
jquery
jqueryui
。这不太正确。
+
运算符重载,在OP的上下文中,它充当一元加号运算符(ECMA-262§11.4.6)。它将以下标识符转换为一个数字(如果可以的话),但不一定将其转换为正值。@RobG:谢谢您的更正。我会试着纠正我的答案以反映它。那不太正确。
+
运算符重载,在OP的上下文中,它充当一元加号运算符(ECMA-262§11.4.6)。它将以下标识符转换为一个数字(如果可以的话),但不一定将其转换为正值。@RobG:谢谢您的更正。我将尝试更正我的答案以反映它。它不会返回
isNan(a)
。对该表达式求值只是为了确定是返回
a>b
还是
+a>+b
的结果。它不会返回
isNan(a)
。对该表达式求值只是为了确定是返回
a>b
还是
+a>+b
的结果。