function a() { return 1; }
function b() { return(1); }
Testei o código acima no console do Chrome e ambos retornaram 1
.
function c() { return "1"; }
function d() { return("1"); }
Eu também testei o código acima e ambas as funções retornaram "1"
.
Então, qual é a diferença entre usar return
e return()
?
javascript
chris97ong
fonte
fonte
void(x)
,typeof(x)
void(0)
já que deveria ser uma abreviação para indefinido . Então, se for taquigrafia, por que incluir caracteres desnecessários? ;-)void i = 1; // ReferenceError
vsvoid (i = 1); // undefined
Respostas:
O mesmo que entre
e
Isso não é nada. Os parênteses são permitidos porque são permitidos em qualquer expressão para influenciar a ordem de avaliação, mas em seus exemplos eles são simplesmente supérfluos.
return
não é uma função, mas uma declaração . É sintaticamente semelhante a outras instruções de fluxo de controle simples comobreak
econtinue
que também não usam parênteses.fonte
return
em uma função, como você retornaria um valor dela?Não há diferença.
return
não é uma chamada de função, mas é uma declaração de linguagem. Tudo o que você está fazendo com os parênteses é simplesmente agrupar seu valor de retorno para que possa ser avaliado. Por exemplo, você pode escrever:Nesse caso, você retorna o valor da instrução
x == 0
, que retornará um booleanotrue
oufalse
dependendo do valor dex
.fonte
Na verdade, aqui a precedência de
()
é mais alta, por isso avalia primeiro:Aqui primeiro
("1")
seja avaliado, da seguinte forma:então a declaração acima é equivalente a:
Veja visualmente:
Portanto, basicamente não há diferença na funcionalidade, mas o segundo pode ser um pouco lento, pois primeiro resolve os colchetes.
fonte
Não há absolutamente nenhuma diferença. Se você olhar para a especificação JS (ECMAScript) da instrução de retorno . Entre muitas outras coisas, ele está lhe dizendo:
que você pode fornecer expressão
return
. Expressão éhello
,Math.abs(x)
,yourCustomFunc(7)
, ou em seu segundo caso isso pode ser1
ou(1)
. Expressão1
após avaliação é igual(1)
e igual(((((1))))))
ou até mesmo como algo realmente bizarro(+(!(+(!1))))
.fonte
Não há diferença, os parênteses são opcionais. Veja MSDN :
fonte
return
comunicado. : P MS provavelmente se cansou de responder à pergunta de noobs JS.()
, não faz parte da instrução de retorno.return (expression
ereturn expression)
são legais.return ()
,return (
ereturn )
: Preturn
éuma declaraçãouma palavra-chave que inicia a declaração de retorno , não uma função.Como foi mencionado, os parênteses extras afetam a ordem de avaliação, mas não são usados para "executar" a função nomeada
return
. É por isso que essas linhas funcionam sem problemas:Eles são, na verdade, idênticos a estas linhas:
O motivo que
return()
gera um erro de sintaxe é o mesmo motivo pelo qual a linha a seguir gera um erro (instrução return incluída para comparação):fonte
return
não incluir nada depois disso, presume que você deseja retornarundefined
.return
por si só são uma declaração de retorno.Há uma enorme diferença para os humanos e nenhuma diferença para o mecanismo Javascript.
return 1
é uma declaração que declara que precisamos sair imediatamente da função, resultando no valor 1.return(1)
é a mesma instrução disfarçada como a chamada de função pela convenção idiota de que você não é obrigado a inserir espaço fora dos parênteses em Javascript. Se você usasse um código como este no sistema de produção, qualquer mantenedor virá ao seu escritório com estacas e tochas, depois de passar algum tempo tentando decidir se você realmente temreturn()
função em algum lugar na base de código ou apenas não sabe para quereturn
serve a palavra-chave.Como muitas outras pessoas já disseram corretamente, os parênteses não fazem nada, exceto "agrupar" com maior precedência do literal para o número
1
.fonte
return
função. "a convenção idiota de que você não é obrigado a inserir espaço fora dos parênteses em Javascript" - quase nenhuma linguagem exige isso; chamar isso de idiota é idiota. "qualquer mantenedor virá ao seu escritório com estacas e tochas" - ninguém competente o faria.return(1)
é uma prática ruim, mas as pessoas que ficam chateadas com essas coisas estão desperdiçando recursos e criando um ambiente ruim.return
função” - o fato do intérprete proibir você de registrar uma função com o nomereturn
não ajudará o leitor do código a não questionar primeiro sua sanidade, portanto, esse código é um desperdício.return(1)
não é apenas "má prática", é um sinal perigoso de alguém não saber o que está fazendo!return
tem (em todos os idiomas que conheço que têm essa palavra-chave) menos precedência. Portanto, se a expressão opcional estiver presente, ela é sempre avaliada primeiro.Na instrução return, os parênteses ao redor da expressão já estão embutidos.
Em JavaScript, como em muitas outras linguagens (como C, C ++, Java, Python), a instrução de retorno tem duas partes: a palavra-chave
return
e uma expressão (opcional). Portanto, em qualquer caso, tudo o que segue areturn
palavra-chave é primeiro avaliado como uma expressão , depois disso, a instrução return é "executada" passando o controle de volta para o chamador.Usar ou não parênteses é uma questão de estilo , enquanto a maioria dos guias de estilo os proíbe para casos triviais como o citado em sua pergunta, porque faz com que o retorno pareça falsamente com uma função.
Adendo posterior
Se estiver com parênteses ou sem, nunca se esqueça de colocar a expressão opcional atrás de
return
, ou seja, na mesma linha. A verdadeira armadilha comreturn
em mentiras JavaScript em adicionar uma quebra de linha após ele:... porque a
test
função acima retornaráundefined
.fonte
adicionando parênteses, garantimos que o javascript não insira um ponto e vírgula antes de várias instruções escritas após o retorno, para referência: - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar #Automatic_semicolon_insertion
exemplo :
return a + b;
é transformado em
return; a + b;
por ASI.
O console avisará "código inacessível após declaração de retorno". Para evitar esse problema (para prevenir ASI), você pode usar parênteses:
return ( a + b );
código copiado de: - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/return
fonte