2016-04-03 9 views
-3

したがって、値のブール値のパラメータを反転する関数を作成するとします。 [ここ] [1]私が思い付いたものです:このjavascript論理関数の私の考えの欠陥は何ですか?

私は本当にただの思考の私の欠陥であるかを理解したいと思います。どのように私のアプローチを修正できますか?

+4

入力パラメータxは関数で使用されることはありません。 – Hun

+0

スクリーンショットの代わりに実際のコードを投稿してください。 [詳細はこちら](http://meta.stackoverflow.com/a/285557/1402846)を参照してください。ありがとうございました。 – Pang

答えて

0

私はあなたが実際にそれを書く必要はないので、学習目的のための関数を記述したいと仮定します。 Javascriptは既にあります! (not)演算子です。あなたの機能と実装については は次のようになります。

function not(x) { 
    if(x === true) return false; 
    else return true; 
} 

しかし、私はあなただけで使用することができます言ったように!オペレーター。

1

あなたのコードを見てください:

function not(x) { 
    if (1 == true) { 
     return "true"; 
    } else if (0 == false) { 
     return "false"; 
    } 
} 
  1. いただきました右:

    function not(x) { 
    
    } 
    
  2. うまくいかいただきました:

    if (1 == true) { 
    //^^^ ^^^^ 
    // | | boolean 
    // | equal (not type safe) 
    // number 
    

    あなたが一定の値を比較します。この場合、ブール値trueを持つ数字1。比較演算子はequality==であり、この "は、が同じタイプでない場合はオペランドを変換します。"です。つまり、変数が含まれていないため、1つが等しいと判断され、次の部分が評価され、

    return "true"; 
    

    などがあります。 else部分の残りの部分は決して到達されず、次の比較も到達されません。

    'true'は常に返されます。ブール値が必要で、文字列を返すので、必要な型ではありません。

  3. は何を変更する必要があります。

    if (x == true) { 
    //^
    // the parameter of the function 
    
        return true; 
        // ^
        //  boolean 
    
    } else { 
    // ^
    // no other if 
    
        return false; 
        // ^
        //  boolean 
    } 
    

    またはlogical NOTオペレータ!持つすべての短いバージョンを:

    function not(x) { 
        return !x; 
    } 
    
関連する問題