function a() { return 1; }
function b() { return(1); }
Probé el código anterior en la consola de Chrome y ambos regresaron 1.
function c() { return "1"; }
function d() { return("1"); }
También probé el código anterior y ambas funciones regresaron "1".
Entonces, ¿cuál es la diferencia entre usar returny return()?
javascript
chris97ong
fuente
fuente

void(x),typeof(x)void(0)ya que se supone que es la abreviatura de indefinido . Entonces, si es taquigrafía, ¿por qué incluir caracteres innecesarios? ;-)void i = 1; // ReferenceErrorvsvoid (i = 1); // undefinedRespuestas:
Lo mismo que entre
y
Eso no es nada. Los paréntesis están permitidos porque están permitidos en cualquier expresión para influir en el orden de evaluación, pero en sus ejemplos son simplemente superfluos.
returnno es una función, sino una declaración . Es sintácticamente similar a otras declaraciones de flujo de control simples comobreakycontinueque tampoco usan paréntesis.fuente
returnuna función, ¿cómo devolvería un valor de ella?No hay diferencia.
returnno es una llamada de función, sino una declaración de lenguaje. Todo lo que está haciendo con los paréntesis es simplemente agrupar su valor de retorno para que pueda evaluarse. Por ejemplo, podrías escribir:En este caso, devuelve el valor de la declaración
x == 0, que devolverá un booleanotrueofalsedependiendo del valor dex.fuente
En realidad, aquí la precedencia de
()es mayor, por lo que se evalúa primero:Aquí en primer lugar
("1")ser evaluado, de la siguiente manera:entonces la declaración anterior es equivalente a:
Ver visualmente:
Entonces, básicamente, no hay diferencia en la funcionalidad, pero la segunda puede ser un poco lenta, ya que en primer lugar resuelve los corchetes.
fuente
No hay absolutamente ninguna diferencia. Si observa la especificación JS (ECMAScript) de la declaración de devolución . Entre muchas otras cosas, te está diciendo:
a los que puedes dar expresión
return. La expresión eshello,Math.abs(x),yourCustomFunc(7), o en su segundo caso esto puede ser1o(1). La expresión1después de la evaluación es lo mismo(1)y lo mismo(((((1))))))o incluso como algo realmente extraño(+(!(+(!1)))).fuente
No hay diferencia, los paréntesis son opcionales. Ver MSDN :
fuente
returncomunicado. : P MS probablemente se cansó de responder la pregunta de JS noobs.(), no es parte de la declaración de devolución.return (expressionyreturn expression)son legales.return (),return (yreturn ): Preturnesuna declaraciónuna palabra clave que inicia la declaración de retorno , no una función.Como se ha mencionado, los paréntesis adicionales afectan el orden de evaluación, pero no se utilizan para "ejecutar" la función nombrada
return. Por eso estas líneas funcionan sin problemas:Son, en efecto, idénticos a estas líneas:
La razón
return()por la que se produce un error de sintaxis es la razón exacta por la que la siguiente línea arroja un error (se incluye una declaración de retorno para la comparación):fuente
returnno incluye nada después, asume que desea regresarundefined.returnpor lo que en sí mismas son una declaración de retorno.Hay una gran diferencia para los humanos y cero para el motor Javascript.
return 1es una declaración que declara que debemos salir inmediatamente de la función que produce el valor 1.return(1)es la misma declaración disfrazada como llamada de función por la convención idiota de que no está obligado a insertar espacio fuera de paréntesis en Javascript. Si usa un código como este en el sistema de producción, cualquier mantenedor vendrá a su oficina con estacas y antorchas, después de pasar algún tiempo tratando de decidir si realmente tiene unareturn()función en algún lugar del código base o simplemente no sabe para quéreturnsirve la palabra clave.Como muchas otras personas ya han dicho correctamente, los paréntesis no hacen nada excepto "agrupar" con mayor precedencia que el literal del número
1.fuente
returnfunción. "la estúpida convención de que no está obligado a insertar espacio fuera del paréntesis en Javascript" - casi ningún lenguaje lo requiere; llamar a esto idiota es idiota. "cualquier mantenedor vendrá a su oficina con estacas y antorchas", nadie competente lo haría.return(1)Es una mala práctica, pero las personas que se molestan por estas cosas están desperdiciando recursos y creando un mal ambiente.returnfunción": el hecho de que el intérprete le prohíba registrar una función con nombrereturnno ayudará al lector del código a no cuestionar su cordura primero, por lo que este código es un desperdicio.return(1)no es sólo una "mala práctica", es una señal peligrosa de que alguien no sabe lo que está haciendo.returntiene (en todos los idiomas que sé que tienen esta palabra clave) menor precedencia. Entonces, si la expresión opcional está presente, siempre se evalúa primero.En la declaración de retorno, los paréntesis alrededor de la expresión ya están integrados.
En JavaScript, como en muchos otros lenguajes (como C, C ++, Java, Python), la declaración de retorno tiene dos partes: la palabra clave
returny una expresión (opcional). Entonces, en cualquier caso, todo lo que sigue a lareturnpalabra clave se evalúa primero como una expresión , después de eso, la declaración de retorno se "ejecuta" pasando el control de vuelta al llamador.Usar o no usar paréntesis es una cuestión de estilo , mientras que la mayoría de las guías de estilo los prohíben para casos triviales como el citado en su pregunta, porque hace que el retorno parezca falsamente una función.
Apéndice posterior
Si tiene paréntesis o no, nunca olvide colocar la expresión opcional detrás de
return, es decir, en la misma línea. El verdadero problema conreturnJavaScript radica en agregar un salto de línea después:... porque la
testfunción anterior volveráundefined.fuente
al agregar paréntesis, nos aseguramos de que javascript no inserte un punto y coma antes de varias declaraciones escritas después del retorno, como referencia: - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar #Automatic_semicolon_insertion
ejemplo :
return a + b;se transforma en
return; a + b;por ASI.
La consola advertirá "código inalcanzable después de la declaración de retorno". Para evitar este problema (para prevenir ASI), puede usar paréntesis:
return ( a + b );código copiado de: - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/return
fuente