まず、このようなチェックはコード内で使用すべきではないことを言いたいと思います。つまり、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文が使用され、その値が返されるようにするには、上記のコードを修正して、あなたのニーズに合った方法に基づいています。それから、私は非常に使いやすくするためにそれの周りに派手なラッパーを書くことをお勧めします。
私の質問は、なぜ関数が条件を使用しているかを知りたいのですか?いくつかの条件が満たされていれば、簡単に値を設定することができます。しかし、なぜ? – Ibu
これを行う必要がある場合は、間違っています! – John3136
[XY問題とは何ですか?](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) –