我找到了这个函数,把数字放在分数里,我试着找出一切都意味着什么。有一件事我搞不懂。
下面是代码:
function reduce(numerator,denominator) {
var gcd = function gcd (a,b) {
if (b) {
return gcd(b, a%b);
} else {
return a;
}
};
gcd = gcd(numerator,denominator);
return [numerator/gcd, denominator/gcd];
}if (b)是什么意思。我知道,如果if语句中只有变量,它将检查变量为true还是false。这将如何适用于一个数字?什么时候才会有其他声明呢?
发布于 2014-12-09 14:05:48
在计算之前,if语句中的任何表达式都将隐式转换为boolean。
在您发布的代码中,它通常用于检查参数是否被传递,在这种情况下,undefined是一个假值,并将被转换为false。AJPerez给出了一个关于错误值的答案(除了他忘记了NaN)。
function reduce(numerator,denominator){
var gcd = function gcd(a,b){
if (b) {
// if two arguments are passed, do something
return gcd(b, a%b);
}
else {
// only one argument passed, return it directly
return a;
}
};
gcd = gcd(numerator,denominator);
return [numerator/gcd, denominator/gcd];
}然而,如果您正在检查的论点确实是错误的,那么这种方法可能是错误的。
https://stackoverflow.com/questions/27380818
复制相似问题