3

Codecademy の Javascript チュートリアルのセクション 4.1 で適切なブール値を返すのに問題があります。コードは次のとおりです。

// Define quarter here.
var quarter = function(n) {
    if (n / 4 ){
        return true;
    } else {
        return false;
    }
};

if (quarter(4) === 1) {
  console.log("The statement is true.");
} else {
  console.log("The statement is false.");
}

私が見ることができるように、新しく定義された四半期変数に「n」のパラメーターを持つ関数を渡し、それを 4 で割って、true の場合は 1 を返すか、false の場合は 0 (else) を返すかを確認します。次に、if ループで 'quarter' 関数を使用して、'n' として渡された数値 '4' の 1 が等しいかどうかを確認しています。

これは、(JavaScript プログラミングを始めようとしているフロントエンド開発者として) 私が使用することに慣れていない基本的なロジックであると想定していますが、いくつかの考えとガイダンスをいただければ幸いです。

4

5 に答える 5

16

JavaScript では、定数truefalseは数値ではありません。彼らは別のタイプです。

さらに、 and と比較し===ているため、比較中の型変換が明示的に防止されます。

0を除く「n」のすべての値に対して(ゼロ以外)n / 4になることに注意してください(おそらく使用するつもりだった編集)。そして、一般に、次の形式の構成は次のとおりです。true%

if (expression) {
  return true;
}
else {
  return false;
}

次のように置き換えることができます:

return !!(expression);

または、代わりに、

return Boolean(expression);
于 2012-04-23T18:50:56.917 に答える
3

1 != true であるため、if ステートメントを一貫性のあるものに変更します。トリプル イコールはそれを許可しません。

if (quarter(4) == true) {

あなたの関数も間違っています.4で割り切れる場合は、このようなものがもっと欲しいと思います:

var quarter = function(n) {
  if (n % 4 == 0){
    return true;
  } else {
    return false;
  }
};

これは次のように短縮できます。

var quarter = function(n) {
   return n % 4 == 0;
}
于 2012-04-23T18:51:18.010 に答える
3

を使用===するということは、「厳密に等しい」ことを求めていることを意味します。真実でも偽りでもありません。これは、数値が厳密ではないため、数値をチェックできないことを意味しますtrue。詳細については、この SO の質問を参照してください

呼び出し元のコードは、 をチェックするか=== true、明示的な値の比較をスキップして、 である必要がありますif (quarter(4)) { ...

于 2012-04-23T18:51:29.313 に答える