-2

如果我有這樣的功能:如何編程一個函數的輸出以輸入另一個函數的輸入?

var danger = 1; 

function stepLeft() { 
    if (danger == 1) { 
     alert("stop") 
    } else { 
     alert("start") 
    } 
} 

...我怎麼做「警報(」停止「)」或任何其他輸出這樣的觸發,並提供表達輸入的東西就像一個開關聲明?那麼我可以引發一系列後果的連鎖反應?謝謝!

+1

我相信你正在尋找*提示*? - https://developer.mozilla.org/pt-BR/docs/Web/API/window.prompt – LcSalazar 2014-09-18 19:54:20

回答

1

你在這裏混合關注。一個alert()是一個UI動作,它不會在你的代碼中觸發任何東西。它只是在UI上做了一些事情。如果你希望你的函數觸發別的東西在你的代碼,你需要調用其他的事情:

function stepLeft() { 
    if (danger == 1) { 
     alert("stop") 
     someOtherFunction(); 
    } else { 
     alert("start") 
     yetAnotherFunction(); 
    } 
} 

或者,如果功能可以改變,你可以提供一個功能stepLeft

function stepLeft(stopFunction, startFunction) { 
    if (danger == 1) { 
     alert("stop") 
     stopFunction(); 
    } else { 
     alert("start") 
     startFunction(); 
    } 
} 

,並稱之爲:

stepLeft(someOtherFunction, yetAnotherFunction); 

或者你可能有stepLeft返回一個值,等功能可以使用:

function stepLeft() { 
    if (danger == 1) { 
     alert("stop") 
     return "stop"; 
    } else { 
     alert("start") 
     return "start"; 
    } 
} 

,並稱之爲:

var actionPerformed = stepLeft(); 
someOtherFunction(actionPerformed); 

這實際上是從你的邏輯中解耦你的UI操作的好機會:

function stepLeft() { 
    if (danger == 1) { 
     return "stop"; 
    } else { 
     return "start"; 
    } 
} 

和:

var actionPerformed = stepLeft(); 
alert(actionPerformed); 
someOtherFunction(actionPerformed); 

問題是,有很多方法來構造你的代碼,這樣一個func的結果可以由另一個功能使用。

+0

我不認爲這就是他的意思......問題說*輸入另一個*的輸入。我相信他想要一個*提示* – LcSalazar 2014-09-18 19:56:04

+0

@LcSalazar:可能,雖然在這種情況下,它是非常模糊的描述。我不會提示「輸出一個函數」。 – David 2014-09-18 19:59:47

+0

是的,這正是我所期待的,非常感謝!我的意思是使用「alert()」或任何其他輸出作爲觸發器。不知道爲什麼這得到-2分,我想我怎麼知道我想要做什麼而不回答我自己的問題?這個網站真的不是初學者友好的。非常感謝! – 2014-09-18 20:58:34

相關問題