我對 JavaScript 很陌生,我想知道是否可以讓一個if陳述句影響代碼的兩個單獨部分。例如:
console.log(1);
console.log(2);
console.log(3);
上面的代碼應該按順序列印數字 1、2 和 3,但我想給它添加一個測驗。如果測驗通過,所有三個命令都應該運行,但如果失敗,則只列印 2。我可以添加兩個if這樣的陳述句:
if (test()) {console.log(1)}
console.log(2);
if (test()) {console.log(3)}
我的問題是該test()功能正在運行兩次。有沒有辦法只運行一次測驗,同時保留數字的順序?對不起,如果有一個明顯的答案,我只是想念它。
(我應該補充一點,這只是必須按順序發生的 3 個事件的示例,因此我需要一個不僅適用于列印連續數字的答案,而且適用于您希望按順序發生 3 件事的任何情況。)
uj5u.com熱心網友回復:
這最好通過將值存盤在將處理控制流執行的變數中來完成(該變數稱為標志)。你可以像這樣簡單:
let testResult = test();
if (testResult) {
console.log(1);
}
console.log(2);
if (testResult) {
console.log(3);
}
這將確保如果testResult是false(即test回傳false或假值)那么您將只2列印,但如果test回傳真或真值,那么1, 2,3將全部列印。
如果您只想要一個if陳述句,則在它們中使用if-else并列印:2
let testResult = test();
if (testResult) {
console.log(1);
console.log(2);
console.log(3);
} else {
console.log(2);
}
(請注意,您可以洗掉上面代碼塊中的第一行并只使用if (test()),因為您只呼叫test一次,但我保留它只是為了讓您可以看到它在許多情況下都可用)。
uj5u.com熱心網友回復:
你可以試試三元運算子!
(test()?(event1;event2;event3):(event2))
uj5u.com熱心網友回復:
所以另一種選擇是在函式中使用標志,你可以跳過繁重的計算或其他東西,這樣做的缺點是如果你想回傳null
var TheTestFlag = null;
let test = () => {
if(TheTestFlag === null){
console.log("Entered into heavy logic");
//...do some stuff
// don't return assigne to the flag
//for exaple if(a>b) TheTestFlag = false;
TheTestFlag = false;
}
//return the flag
return TheTestFlag;
};
if (test()) {
console.log(1);
}
console.log(2);
if (test()) {
console.log(3);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/491800.html
標籤:javascript
