2016-04-12 11 views
1

ifステートメントを使用して関数が値を返すかどうかを確認する方法や方法はJavaScriptで確認できますか?functionがifステートメントを使用しているかどうかをチェック

ので、この:この対

function(val) { 
    if (val) return "it is true"; 
    return "it is false"; 
} 

function(val) { 
    var str = 'it is '; 
    return str += val; 
} 

私は周りを探してきたし、唯一のJavaや他の言語に関連した記事を見つけることができます。前もって感謝します。

EDIT:関数(ユーザーが記述)がif文を使用するかどうかを確認するテストを作成しています。そのことを少し明確にすることを願っています!

+4

私の質問は、なぜ関数が条件を使用しているかを知りたいのですか?いくつかの条件が満たされていれば、簡単に値を設定することができます。しかし、なぜ? – Ibu

+8

これを行う必要がある場合は、間違っています! – John3136

+3

[XY問題とは何ですか?](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) –

答えて

2

まず、このようなチェックはコード内で使用すべきではないことを言いたいと思います。つまり、if文が関数内で使用されているかどうかをチェックするべきではありません。値が返されるかどうかにかかわらず、これはチェックまたはテストされるべきではありません。


しかし、トピックに戻るには私はこれが箱から出ることができるかどうかははっきりしていません。私はしかし、あなたの目標に似た何かを達成するために使用できるかもしれない解決策を持っています。

与えられた関数を文字列表現に変換することができます。次の例を見てみましょう:それはfunction() { return 1 + 3; }になるよう

// Define a function 
var myFunction = function() { 
    return 1 + 3; 
}; 

// Print the function, as a string 
console.log(myFunction.toString()); 

このコードは、コンソール内の関数の文字列表現を出力します。 Firefoxのようないくつかの環境は、function() { return 4; }のようなコンパイルされたバージョンの関数を返しますが、実際には私たちの使用に影響を与えません。

このメソッドを使用すると、指定された関数にif文が含まれているかどうかを確認できます。そのようなコードは、次のようになります。

// Define a function 
var myFunction = function() { 
    return 1 + 3; 
}; 

// Check whether the given function contains an if-statement 
if(myFunction.toString().indexOf('if') > -1) { 
    console.log('This function does contain an if-statement'); 
} else { 
    console.log('This function does not contain an if-statement'); 
} 

この方法は、状況には適していませんが、正しい方向に向けるかもしれません。この方法は、少なくともこの状態ではない、堅実な解決策ではないことに注意してください。関数内で文字列(または他のもの)として 'if'を使用すると、上記のコードで関数にif文が含まれていると言えます。また、if文の内部から値が返されるかどうかは明示的にチェックされません。

実際のif文が使用され、その値が返されるようにするには、上記のコードを修正して、あなたのニーズに合った方法に基づいています。それから、私は非常に使いやすくするためにそれの周りに派手なラッパーを書くことをお勧めします。

+1

ありがとう!それは間違いなく私を正しい方向に向けるものです。 – Jose

関連する問題