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 return
y 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; // ReferenceError
vsvoid (i = 1); // undefined
Respuestas:
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.
return
no es una función, sino una declaración . Es sintácticamente similar a otras declaraciones de flujo de control simples comobreak
ycontinue
que tampoco usan paréntesis.fuente
return
una función, ¿cómo devolvería un valor de ella?No hay diferencia.
return
no 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 booleanotrue
ofalse
dependiendo 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 ser1
o(1)
. La expresión1
despué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
return
comunicado. : P MS probablemente se cansó de responder la pregunta de JS noobs.()
, no es parte de la declaración de devolución.return (expression
yreturn expression)
son legales.return ()
,return (
yreturn )
: Preturn
esuna 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
return
no incluye nada después, asume que desea regresarundefined
.return
por 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 1
es 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éreturn
sirve 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
return
funció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.return
función": el hecho de que el intérprete le prohíba registrar una función con nombrereturn
no 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.return
tiene (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
return
y una expresión (opcional). Entonces, en cualquier caso, todo lo que sigue a lareturn
palabra 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 conreturn
JavaScript radica en agregar un salto de línea después:... porque la
test
funció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