Wyrażenie po lewej stronie funkcji w JavaScript
Przyjrzyjmy się następującemu kodowi:
+function func() {
console.log('!');
}
Jak już wiesz, ta funkcja jest wyrażeniem funkcyjnym, pomimo tego, że ma nadaną nazwę (już ustaliliśmy, że obecność nazwy w ogóle nie jest kryterium). Usuńmy ten plus - i otrzymamy Function Declaration:
function func() {
console.log('!');
}
Postawmy + w linii przed
funkcją - znów stanie się Function Expression:
+
function func() {
console.log('!');
}
A teraz po plusie postawmy liczbę 1
i średnik - nasza funkcja stanie się Function
Declaration:
+1;
function func() {
console.log('!');
}
Dlaczego tak: ponieważ w pierwszej linii napisano jedno zakończone polecenie, zamknięte średnikiem. Dlatego to polecenie nie wpływa w żaden sposób na naszą funkcję.
Właściwie średnik można usunąć, przecież w JavaScript nie jest on obowiązkowy - funkcja i tak pozostanie Function Declaration:
+1
function func() {
console.log('!');
}
A jeśli po 1 wstawimy jeszcze jeden
plus, to funkcja stanie się Function Expression:
+1+
function func() {
console.log('!');
}
Dlaczego tak: ponieważ w pierwszej linii mamy niedokończone wyrażenie - stoi plus i po nim nic. Dlatego interpreter JavaScript uważa, że ten plus odnosi się do linii poniżej, czyli do naszej funkcji.
Jeśli zaś w pierwszej linii znajduje się zakończone wyrażenie, to JavaScript automatycznie stawia mu średnik i to wyrażenie w żaden sposób nie wpływa na naszą funkcję.
Określ, czy przedstawiona funkcja jest Function Declaration czy Function Expression:
-
function func() {
console.log('!');
}
Określ, czy przedstawiona funkcja jest Function Declaration czy Function Expression:
-1;
function func() {
console.log('!');
}
Określ, czy przedstawiona funkcja jest Function Declaration czy Function Expression:
-1
function func() {
console.log('!');
}
Określ, czy przedstawiona funkcja jest Function Declaration czy Function Expression:
1
function func() {
console.log('!');
}
Określ, czy przedstawiona funkcja jest Function Declaration czy Function Expression:
-1-
function func() {
console.log('!');
}