2011-09-17 71 views
0

我希望有一個函數可以在調用特定函數之前檢查條件是否爲真。我的目標是在另一個函數中有一行代碼(被調用的函數)。這個函數應該在任何其他代碼執行之前運行。下面是一些僞證明我的意思:有沒有辦法用JavaScript中的另一個函數結束函數?

function checkFunction(){ 
//checks if a condition is true if so end function, else continue function 
} 
function aFunction(){ 
checkFunction(); 
//some code 
} 

我知道我可以做一個包含返回條件語句,但我想保持這種短如果可能的話。

謝謝你們的時間。

+0

把它包在一個try {}趕上{},如果你需要結束只是做一些像「undefined_var /未定義」,p –

+0

那麼,是什麼問題,是什麼呢?你嘗試過什麼嗎? – Bakudan

+0

爲了可讀性而不是緊湊性。你總是可以用工具縮小代碼(他們會做得更好)。 –

回答

1

沒有什麼專門爲你想要的東西,它反正就不好的做法近乎。但是,你能得到它漂亮的只是寫東西喜歡簡潔:

function aFunction() 
{ 
    if (!checkFunction()) return; 
    //some code 
} 
+0

在什麼情況下會執行退貨?對或錯? –

+0

當'checkFunction()'返回'false'時,'aFunction'會立即返回。如果您希望在checkFunction()返回true時立即返回它,只需刪除'!' – adpalumbo

+0

它從我在元素上創建的屬性獲取布爾值。像這樣:'

-content-
'它會讀取屬性值作爲字符串還是布爾值?我問的原因是因爲它正在執行代碼,無論它是真是假。 –

0

你可能想要一個assert般的函數,但反過來想:

function stopIfTrue(x) { 
    if(x === true) throw "stop function"; // can be any string 
} 

然後:

function aFunction(){ 
    stopIfTrue(something); // if 'something' is true an error will be thrown; function will exit 
    //some code 
} 
0

你能做的就是動態地改變其他功能的伎倆。所以

function make_wrapped(before, after){ 
    return function(){ 
     if(before()) return; 
     after.apply(this, arguments); 
    } 
} 

//set aFunction to be the new function 
aFunction = make_wrapped(checkFunction, aFunction); 

編輯:我誤解了問題。這可能比你需要的更復雜。

0

我只想做到這一點:

function checkFunction(){ 
    return (condition); 
} 

function aFunction(){ 
    if(!checkFunction()) return; 
    //some code 
} 
+0

這個方法在什麼情況下執行返回,是true還是false? –

+0

@Felipe:當'checkFunction()'返回一個值爲'false'的值。 –

0

如果你正在嘗試做的是這樣的:

function aFunction() 
{ 
    if(checkFunction()) 
    { 
     return; 
    } 
    //somecode 
} 

不使用機能缺失()返回,你可以做這樣的:

function aFunction() 
{ 
    if(!checkFunction()) 
    { 
     //somecode 
    } 
} 
相關問題