Expressão de função à esquerda em JavaScript
Vamos considerar o seguinte código:
+function func() {
console.log('!');
}
Como você já sabe, esta função é uma expressão de função, apesar de ter um nome definido (já descobrimos que a presença de um nome não é um critério). Remova este sinal de mais - e obteremos uma Declaração de Função (Function Declaration):
function func() {
console.log('!');
}
Vamos colocar + em uma linha antes da
função - ela se tornará uma Expressão de Função (Function Expression) novamente:
+
function func() {
console.log('!');
}
E agora, após o sinal de mais, vamos colocar o número 1
e um ponto e vírgula - nossa função se tornará uma
Declaração de Função (Function Declaration):
+1;
function func() {
console.log('!');
}
Por que isso acontece: porque na primeira linha há um comando completo e terminado, fechado por um ponto e vírgula. Portanto, este comando não afeta de forma alguma nossa função.
Na verdade, o ponto e vírgula pode ser removido, pois em JavaScript ele não é obrigatório - a função continuará sendo uma Declaração de Função (Function Declaration):
+1
function func() {
console.log('!');
}
Mas se após o 1 colocarmos outro
sinal de mais, a função se tornará uma Expressão de Função (Function Expression):
+1+
function func() {
console.log('!');
}
Por que isso acontece: porque na primeira linha há uma expressão não finalizada - há um sinal de mais e depois dele não há nada. Portanto, o interpretador JavaScript entende que este sinal de mais se refere à linha abaixo, ou seja, à nossa função.
Se a primeira linha contiver uma expressão finalizada, o JavaScript automaticamente coloca um ponto e vírgula nela e essa expressão não afeta nossa função de forma alguma.
Determine se a função apresentada é uma Declaração de Função (Function Declaration) ou uma Expressão de Função (Function Expression):
-
function func() {
console.log('!');
}
Determine se a função apresentada é uma Declaração de Função (Function Declaration) ou uma Expressão de Função (Function Expression):
-1;
function func() {
console.log('!');
}
Determine se a função apresentada é uma Declaração de Função (Function Declaration) ou uma Expressão de Função (Function Expression):
-1
function func() {
console.log('!');
}
Determine se a função apresentada é uma Declaração de Função (Function Declaration) ou uma Expressão de Função (Function Expression):
1
function func() {
console.log('!');
}
Determine se a função apresentada é uma Declaração de Função (Function Declaration) ou uma Expressão de Função (Function Expression):
-1-
function func() {
console.log('!');
}