Zdravím.
Chtěl bych se zeptat, proč se v nějakých scriptech začíná zápis funkce například
(function(){...})
nebo
;(function(){...})
Ještě by mě zajímalo, co vlastně vůbec má udělat například:
function nazev_funkce(cislo)
{
if (cislo == 100) return true;
return false;
}
- nechápu, proč je vždy na konci funkce "return false", když se může předtím vrátit "return true".
Snad jsem to popsal srozumitelně, budu rád za každou reakci.
1. To jsou anonymní funkce, které se občas v Javascriptu používají. Nebo jsi to snad našel v PHP?
2. První return je podmíněný, druhý nepodmíněný.
1) Jedná se o jednorázovou funkci, která se používá tam, kde je potřeba definovat událost.
Buď můžeš použít klasiku:
function click()
{
// nejaky kod
}
elm.onclick = click();
nebo to spojit:
elm.onclick = function () { // nejaky kod }
2) Každá funkce má svoji návratovou hodnotu, která se provádí příkazem return cokoli_ven_z_funkce;
Příkaz return je konečný. To jest, že zavoláním tohoto příkazu se činnost funkce ukončí a předá se návratová hodnota. Cokoli dalšího se ignoruje.
V tom příkladu jde o podmíněný příkaz. Pokud podmínka platí, tak se vykoná jeho příkaz. Zde return true. Jelikož je zavolán return, tak cokoli dalšího se pak ignoruje. To znamená, že k return false se již nedostane.
Pokud však podmínka neplatí, tak jeho příkaz (return true) se neprovede a pokračuje dále. Tedy k return false.
Jasně, druhý bod chápu, děkuji moc.
Jen bych se ještě chtěl zeptat k tomu prvnímu - taková funkce se zavolá automaticky při načtení stránky?
Pokud vytvořím elm.onclick = function() { // nejaky kod }, tak funkce proběhne až po kliku na elm. Ale pokud mám například JavaScript v jiném souboru, ve kterém hned na začátku bude (function(){ // nejaky kod }), zavolá se tato funkce automaticky?
Nebylo tam náhodou přesně
$(function() {
});
Tento zápis patří do knihovny jQuery. A podstatě obaluje celý jeho kód. Respektive celý úsek se provede až tehdy, až se načte jQuery knihovna. To znamená, že tento úsek může být kdekoli, ale až po načtení jQuery. Jak máš <script>, tak nejdříve <script src="jquery-min.js"> až pak to ostatní.
Funkce samotná se sice může načíst, ale sama o sobě nic nedělá. Musí být něčím nebo někým spuštěna.
Pokud někde narazíš na tento přesný zápis:
(function() {
})
tak se sice načte, ale nevykoná se. Nemá spouštěče. Mám pocit, že by tohle mělo vyvolat i chybu syntaxe.
Například samotné jQuery začíná
(function(E,B){function ka(a,b,d){ // a dalsi kod
Například samotné jQuery začíná
(function( window, undefined ) {
...
// Expose jQuery to the global object
window.jQuery = window.$ = jQuery;
})(window);
To bude mit, si myslim, neco spolecne s evalem, vykonani bezejmenne funkce.
aaa = function( window, undefined ) {...}
window.eval('aaa')(window);