Hur stoppar jag ett javascrpt script från en funktion ?

Permalänk

Hur stoppar jag ett javascrpt script från en funktion ?

Jag känner mig ganska dum nu men hur gör jag för att avbryta exekvering av ett javascript script från en funktion ?
Jag vill altså att bara "Start" visas i outputen om jag klickar på "No" i confirm-rutan.

Måste jag använda mig av Throw för att avbryta all exekvering direkt från funktionen eller hur gör jag ?
Jag vet att jag skulle kunna returnera false och sedan använda mig av en if-sats för att göra detta men jag antar att det måste finnas något bättre sätt.

const debugConfirm = (message) => { if(!window.confirm(message)) return } console.log("Start") debugConfirm("fubar") console.log("Visa inte det här meddelandet!")

Permalänk
Medlem

Du får returnera resultatet från funktionen och sedan ha en if-sats runt det du inte vill visa baserat på det.

Använd exceptions sparsamt, exceptions är ett riktigt otyg som aldrig borde ha uppfunnits.

Permalänk
Medlem

abort(); borde fungera. Källa: https://stackoverflow.com/a/9834855

Visa signatur

Citera mig om du vill att jag ska hitta till ditt svar.
airikr.me. Andra projekt: Keizai, Koroth & Serenum.

Permalänk
Medlem
Skrivet av burton666:

Jag känner mig ganska dum nu men hur gör jag för att avbryta exekvering av ett javascript script från en funktion ?
Jag vill altså att bara "Start" visas i outputen om jag klickar på "No" i confirm-rutan.

Måste jag använda mig av Throw för att avbryta all exekvering direkt från funktionen eller hur gör jag ?
Jag vet att jag skulle kunna returnera false och sedan använda mig av en if-sats för att göra detta men jag antar att det måste finnas något bättre sätt.

const debugConfirm = (message) => { if(!window.confirm(message)) return } console.log("Start") debugConfirm("fubar") console.log("Visa inte det här meddelandet!")

Det räcker med

console.log("Start") if (window.confirm("Ska jag skriva nästa meddelande?")) { console.log("Du valde att detta skulle skrivas") } console.log("Slut")

Edit: Jag antog lite förhastat att ditt kodexempel mer eller mindre var vad du var ute efter. Jag skulle säga att en if-sats är den enklaste lösningen på det mer generella problemet. Det går att göra med exceptions också men du behöver fånga någonstans för att programmet ska kunna fortsätta.

Visa signatur

Kom-pa-TI-bilitet

Permalänk

Med Confirm() behöver du använda dess returvärde för att göra något med.

När du säger stoppa JavaScript, menar du då hela skriptet så att ingenting mer får köras och att det ska kunna ske i vilken funktion som helst som väljer att anropa debugConfirm()?

Om så, intressant utmaning, för det är något jag själv aldrig tänkt på att göra, men bör lära mig att kunna göra bara för att!

Mvh,
WKL.

Visa signatur

"Den säkraste koden är den som aldrig skrivs"
"Visste du förresten att det är ett mångmiljardbolag?"
"Jag lever inte för att koda utan kodar för att sen kunna leva"

Permalänk
Skrivet av Airikr:

Aha nice!

Då borde det gå att extrapolera följande:

function debugConfirm(msg) { // Show custom confirm message. const AbortOrNot = confirm(msg); // Destroy JS if "No" or "Cancel" was chosen. if(!AbortOrNot){ // Change error message here if wanted! throw new Error("JavaScript aborted!"); } }

Mvh,
WKL.

Visa signatur

"Den säkraste koden är den som aldrig skrivs"
"Visste du förresten att det är ett mångmiljardbolag?"
"Jag lever inte för att koda utan kodar för att sen kunna leva"

Permalänk

Tackar, men i slutändan så är det helt enklelt throw som måste användas ändå. Jag antog att det måste finnas något smidigare sätt men det verkar ju inta vara så

Permalänk
Medlem

Ska vara ärlig med att jag inte riktigt förstår syftet med koden, vilket också gör det svårt att skriva ett svar. Men det här borde funka?

Om du får ett ok, returnera true och skriv ut strängen.
Om du får ett nej/avbryt, returnera false och skriv inte ut strängen.

const debugConfirm = (message) => { if(!window.confirm(message)) return false; else return true; } console.log("Start"); let proceed = debugConfirm("fubar"); if(proceed) { console.log("Visa inte det här meddelandet!"); }

Lade till return true vid "ok" också
Visa signatur

Modermodem från ONOFF och bildskärmsutrustning från Electrolux. US Robotics 28.8K telefonuppringd internetförbindelse. Har en förkärlek för tysk tjejpop.