.. abych jen nekybicoval, jak bych to napsal já.
Proměnou deklarujeme pomocí klíčového slova „var“, např.
var bla = 'foo'.
To var tam dávejte vždycky, poběží to sice bez toho, ale koledujete si zbytečně o problémy, protože proměnná tak bude globální a jelikoz Internet Explorer propaguje všechny ID elementů do globálního scope, může dojít ke kolizi názvů.
Funkci deklarujete bud tak, ze ji pojmenujete:
function foo() {}
nebo priradite anonymní funkci deklarované proměnné:
var foo = function() {}
Kombinace obou přístupů je možná, ale zbytečná.
Chcete-li 100% crossbrowser přístup, tak na pojmenované funkce zapomeňte, prohlížeče je interpretují rozdílně. Třeba safari nadeklaruje i tuto funkci:
if (false) function foo(){};
takže vždy psát:
var foo = function() {};
Jakmile proměnou deklarujete, můžete ji používat a odkazovat se na ní. Jaká je její viditelnost? Proměnná je viditelná v celém scope(rozsahu) funkce, ve které je definovaná. Pokud není definovaná ve funkci, je viditelná všude, tedy globální.
Co to znamená scope? Všechno uvnitř nějaké funkce:
var foo = function() { // tady je scope foo var bla = function() { // tady je scope bla } }
Scope funkce, jak je vidět, tedy může být zanořený. Zanořovat lze do alelůja, vydáme-li se však opačným směrem, skončíme u objektu window (pakliže se bavíme o javascriptu v prohlížečích).
Další díl: co je to „context“ a jak funguje „this“.
:)