首先我想提一下,這樣的檢查不應該用在代碼中,我的意思是正確的代碼不應該檢查if語句是否在函數內部使用。無論是否返回值,都不應該檢查或測試。
但是,要回到主題。我不太確定這是否可以開箱即用。不過,我確實有一個解決方案,您可以使用它來實現與您的目標類似的內容。
您可以將給定的函數轉換爲它的字符串表示形式。看看下面的例子:
// Define a function
var myFunction = function() {
return 1 + 3;
};
// Print the function, as a string
console.log(myFunction.toString());
這段代碼將打印在控制檯功能的字符串表示,所以這將是function() { return 1 + 3; }
。某些環境(例如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) –