2012-04-23 14 views
1

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

// 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."); 
} 

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

私はこれは私がちょうど(JavaScriptプログラミングに入るために探して、フロントエンド開発者として)使用に慣れていないのですが、私は間違いなくいくつかの考えや指導をお願い申し上げますいくつかの基本的なロジックであると仮定しています。

答えて

10

JavaScriptでは、定数truefalseではなく、の数値です。彼らは別のタイプです。

さらに、あなたは===と比較しているし、それが明示的に比較時に型変換を防ぐことができます。 n/4は0(おそらく%を使用することを意図し編集)を除いて、「N」のすべての値についてtrue(非ゼロ)になるだろうということ

注意。そして一般的には、フォームのいずれかの建設:

return !!(expression); 

や、文が一貫している場合、代わり、

return Boolean(expression); 
+1

1 -Aaron 。 –

+1

リターン!!(式);ブール変換へのかなり恐ろしいショートカットですが、それでもなお素敵な答えです。 –

+0

それは本当に "恐ろしい"ものではありません。それはちょうど慣用的です。しかし* chacunの息子goût* :-) – Pointy

2
は1以来、あなたを変更

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

を置き換えることができ!=真。トリプル・イコールはそれを許さないでしょう。

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; 
} 
+2

本当に...本当ですか?問題の目的のために、このコードは同等です。 –

+0

はいこのコードは同等です - %記号は0またはNOT 0を返します。すべての正の整数はTRUEと解釈され、0は偽です。だからそれは同等です –

+1

ああ、それは素晴らしいです。その略語は間違いなく理にかなっています。ありがとう! –

2

===を使用すると、真実か偽ではなく「厳密な等価」を求めていることを意味します。これは、番号が厳密にtrueではないため、番号を確認できないことを意味します。 this SO question for more detailsを参照してください。

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

0

ここではうまくいきませんので、私はそれを逃したと思います。私はまた、グーグルの解決策が私のために物事を悪化させることがわかります。

私はJavaScriptで解決策をoverthinkことを発見する傾向があり、これは明らかに解決策を解決できないことにつながります。

また、必ずしもreturn trueを必要としませんが、私はとにかくそれを追加しました。

論理的に順序付けられた単純さが重要であることを覚えておいてください。

 

    var quarter = function(number) { 
     var number = n/4; 
     var n = 48; 
    if (quarter(number) % 3 === 0) { 
     console.log("The statement is true"); 
     return true; 
    } else { 
     console.log("The statement is false"); 
     } 
    } 

私はあなたに役立つことを願っています。

JavaScriptのスキルと知識が不足しているため、自分自身やあなたのような初心者にこれを説明します。そして、JavaScriptの極端な知識を持っている誰もが、おそらく反対するだろうが、ほとんどのプログラミング雇用者がプログラマのanydayの上に通信大手がかかります、なぜそれはまたです:

  1. あなたがfunction--を定義している意味、四半期という名前の関数を定義しますquarter - しかし、まずquarter-varを定義する必要があります。
    var quarter = function(number)
  2. この関数は、
    n/4
    に等しい値を返します。この関数は
    quarter(number)
    として定義されています。値は数値です。
    あなたはその後、trueを返すと、あなたのif文を開始するには
    number = n/4
  3. と値を定義し、新たなVARを導入し、

    function(number or n)
    は今四半期、あなたが定義している機能です。

  4. 正しい式は次いでを分割する数とNを定義し、その数はであることができることによってこれを行う

    console.log("The statement is true!")
    の形態でtrueを返すことに依存して提供する基礎/ELSE場合statemeために働く
    quarter(number)
    quarter(n)
    Nと、
    n/4
    として定義されているないremainder.Since 数で3で割ったが、この例では、両方として定義されnt。
    3で除算して余りを0にするには、
    % 3 === 0
    を使用します。

    1. したがって
      if (quarter(number) % === 3 {
      は、定義された関数になりました。
      number
      はパラメータで、パラメータの値には変数
      var number = n/4
      var n = 48
      を割り当てます。そのノートオン

私はこれを入力していて、これは、理論的には、また、仕事と短いことになります。

 

    var quarter = function(number) { 
       if (quarter(48) % 3 === 0) { 
       console.log("This statement is true!"); 
       return number = number/4; 
       } else { 
        console.log("This statement is false."); 
      }; 
     }; 

0

さて、この愚かな事はスーパー凝り性です。今私はそれを解明します。 あなたのコードは次のようになります。

var quarter = function (number) { 
return number/4; 
} 
if (quarter(48) % 3 === 0) { 
console.log("The statement is hella true"); 
} else { 
console.log("The statement is hella false brah"); 
} 

愚か四半期における数(n)は、ブラケットが真の文で返すことがあるので、あなたがモジュールを通過しない理由があります。 数字、任意の数字を選んで(3)、(4)で掛けます。これはモジュロ%を0にしてif/else文を真にする値を返します。

世界への私の貢献、論理エラーを指摘して