Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Javascript中只有一个数字的If语句_Javascript_Type Coercion - Fatal编程技术网

在Javascript中只有一个数字的If语句

在Javascript中只有一个数字的If语句,javascript,type-coercion,Javascript,Type Coercion,我发现这个函数可以把数字放在分数中,我试图弄清楚每件事的含义。有一件事我搞不懂 代码如下: 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 [numer

我发现这个函数可以把数字放在分数中,我试图弄清楚每件事的含义。有一件事我搞不懂

代码如下:

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];
}

如果(b)是什么意思。我知道如果if语句中只有一个变量,那么它将检查该变量是真是假。这将如何应用于数字?什么时候会转到else语句?

在计算之前,
if
语句中的任何表达式都将隐式转换为
布尔值

在您发布的代码中,它通常用于检查是否传递了参数,在这种情况下,
undefined
是假值,将转换为
false
。AJPerez已经给出了关于falsy值的答案(除了他忘记了
NaN


但是,如果您正在检查的参数确实是由falsy传递的,那么这种方法可能会有问题。

if
语句中的任何表达式在求值之前都会隐式转换为
布尔值

在您发布的代码中,它通常用于检查是否传递了参数,在这种情况下,
undefined
是假值,将转换为
false
。AJPerez已经给出了关于falsy值的答案(除了他忘记了
NaN


但是,如果您正在检查的参数确实是由falsy传递的,那么这种方法可能会有问题。

这与如何将事物转换为布尔值有关,即某事物是否真实

if(0 | | | | | | | | |未定义){//这些是“falsy”
//这永远不会发生
}否则,如果(1/*或任何其他数字*/){//,则这些是“truthy”
//这种情况会发生
}

这与事物如何转换为布尔值有关,即事物是否真实

if(0 | | | | | | | | |未定义){//这些是“falsy”
//这永远不会发生
}否则,如果(1/*或任何其他数字*/){//,则这些是“truthy”
//这种情况会发生
}

在javascript中,您可以通过将变量放入if语句来检查变量是否已赋值。如果它有一个值,它将为真(除非它的值为假或0)。如果它没有值或计算结果为null,则将返回false。看起来他们在将变量传递到函数之前正在验证它是否有值。

在javascript中,可以通过将变量放入if语句来检查变量是否已赋值。如果它有一个值,它将为真(除非它的值为假或0)。如果它没有值或计算结果为null,则将返回false。看起来他们在将其传递到函数之前正在验证它是否有值。

如果
b
是:

  • 0
  • null
  • 未定义
  • NaN
  • 或空字符串
    “”
它将被评估为false。否则,它将被评估为true。

如果
b
为:

  • 0
  • null
  • 未定义
  • NaN
  • 或空字符串
    “”

它将被评估为false。否则,它将被评估为true。

不要忘记
NaN
:DAdded NaN。我也想过加上false,但是……:)别忘了
NaN
:DAdded NaN。我也想过加上false,但是……:)写
x!=0是真实的(负或正)@BradChristie
NaN!=0; // true
可能更简洁地编写
x!=0是真实的(负或正)@BradChristie
NaN!=0; // 正确
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];
}