Tengo una funcion:
function myfunction() {
if (a == 'stop') // How can I stop the function here?
}
¿Hay algo como exit()
en JavaScript?
javascript
Simón
fuente
fuente
for
bucle. Incluso entonces, no tengo idea de por qué se usaría el método sugerido, cuando simplemente podría llamarbreak;
. Para usar el ejemplo del artículo: Elif(i==5) break;
usoreturn
detendrá la ejecución de la función, esté o no en unfor
bucle.return
detendrá la ejecución de la función, que parece ser lo que solicitó.Respuestas:
Solo puedes usar
return
.Esto enviará un valor de retorno de
undefined
lo que se llama la función.Por supuesto, puede especificar un valor de retorno diferente. Cualquier valor devuelto se registrará en la consola utilizando el ejemplo anterior.
fuente
undefined
, y eso es lo que proporciona mi solución principal. El artículo al que hizo referencia se refiere a hacerreturn false
en un controlador de eventos jQuery. Esa es una cuestión completamente diferente. Esta es la forma correcta de salir de una función de JavaScript. Obviamente, si la persona que llama depende del valor devuelto, el valor debe definirse adecuadamente.if(a != 'stop') { /* run my code */ }
para que el código solo se ejecute cuandoa
no sea igual'stop'
sin proporcionar un explícitoreturn
. Pero el valor de retorno es idéntico a mi solución . En ambos casos,undefined
será devuelto.undefined
(o no recibe algún otro valor) como un valor de retorno, entonces deberá cumplir con la especificación de esa API y devolver el valor correcto. En general, para un sistema de manejo de eventos, esperaráundefined
como una simple indicación de que el controlador ha finalizado, y no hay más instrucciones. Con jQuery,return false;
tiene un significado especial dando instrucciones para hacer unpreventDefault
ystopPropagation
.Aparentemente puedes hacer esto:
Vea los ámbitos de bloque mediante el uso de una etiqueta: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/label
No puedo ver ninguna desventaja todavía. Pero no parece un uso común.
Derivó esta respuesta: JavaScript equivalente del dado de PHP
fuente
return false;
es mucho mejor que soloreturn;
fuente
false
mejor? Yo diría que el valor predeterminadoundefined
es mejor en el caso genérico. De cualquier manera, tiene razón al decir que a menudo es mejor devolver un valor significativo.false
queundefined
.Esta:
fuente
Usando un enfoque un poco diferente, puede usar
try catch
, con la declaración throw.fuente
Si está buscando un script para evitar enviar el formulario cuando se encuentran algunos errores, este método debería funcionar
cambie el tipo de botón Enviar a "botón"
espero que esto ayude.
fuente
Usar a
return
detendrá la función y devolveráundefined
, o el valor que especifique con el comando return.fuente
No me gusta responder cosas que no son una solución real ...
... pero cuando encontré este mismo problema, hice la siguiente solución:
Espero que pueda ser útil para cualquiera.
fuente
Creo que lanzar un nuevo error es un buen enfoque para detener la ejecución en lugar de simplemente devolver o devolver falso. Por ej. Estoy validando una cantidad de archivos que solo permito un máximo de cinco archivos para cargar en una función separada.
Pero estoy llamando a esta función desde la función de flujo principal como
En el ejemplo anterior, no puedo detener la ejecución a menos que arroje un nuevo error. Solo devolver o devolver falso solo funciona si está en la función principal de ejecución; de lo contrario, no funciona.
fuente
salida(); se puede usar para ir a la próxima validación.
fuente
Si está utilizando jquery. Esto debería evitar que la función brote hasta que la función principal que llama a esto también se detenga.
fuente
stopImmediatePropagation()
no es una cosa de jQuery, y detener la propagación no es lo mismo que salir de una función.escriba cualquier comando aleatorio que arroje un error, por ejemplo:
o
fuente