在 Javascript 中只有一个数字的 if 语句
If statement with only a number in Javascript
我发现这个函数可以将数字放入分数中,我试图弄清楚一切的含义。有一件事我无法弄清楚。
代码如下:
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 语句中只有变量,它会检查变量是真还是假。这将如何应用于数字?什么时候会转到 else 语句?
这与事物如何转换为布尔值有关,即某事是否真实
if (0 || NaN || undefined) { // these are "falsy"
// this never happens
} else if (1 /* or any other number*/ ){ // these are "truthy"
// this happens
}
如果b
是:
-
0
-
null
-
undefined
-
NaN
- 或空字符串
""
它将被评估为假。否则,它将被评估为 true。
在javascript中,你可以通过将变量放在if语句中来检查变量是否被赋值。如果它有一个值,它将是真的(除非它的值是假或0)。如果它没有值或计算为 null,它将返回 false。看起来他们正在验证它有一个值,然后再将其传递到函数中。
语句
中的任何表达式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];
}
但是,如果您正在检查的参数确实通过 falsy传递,则此方法可能会有问题。
相关文章:
- 可以't让我的if语句处理js中的html表单输入
- 如何在 API 调用后和 if 语句中启用提交按钮
- 带有多个elseif的Javascript if语句
- Sharepoint JScript if语句未执行
- for循环中的javascript if语句找不到==
- jquery if语句返回return wong语句
- 在if语句下的html中使用javascript变量
- 将错误与if语句混淆
- 循环通过数组的If语句不起作用
- jQuery模板中的If语句
- 如何从数据库中回显If语句
- 如何减少if语句的数量
- 在Javascript中将一个值和字符串数组转换为if语句
- Dropbox oauth认证的IF语句的第二部分是't已触发
- MVC Jquery-按钮点击-获取if语句错误
- 如何重写Javascript If语句以选择Classes而不是ID's的HTML格式
- KnockoutJS:为虚拟元素使用嵌套的条件if语句
- If语句发布或操作员发布
- 清除函数中if语句内部不起作用的间隔
- 使用if语句重新循环