Jednoduše řečeno, omezovač rozsahu je samospouštěcí funkce, která definuje proměnné, provádí úlohu a vymaže tyto proměnné, takže jejich rozsah je omezen na funkci samotnou. Vezměte si například následující kód JavaScript:
/* do task 1: */ var lynx = $$('a'); var divs = $$('div'); //(do stuff with links and divs) /* do task 2 */ var lynx = $$('a'); //error: lynx already defined! var lis = $$('li'); //(do stuff with links and list items)
Vše výše uvedené funguje, ale druhý úkol může „vidět“ proměnné použité k dokončení úkolu jedna. To je nežádoucí, protože tyto proměnné z první úlohy by mohly způsobit problémy s pozdějšími úlohami. Lepším způsobem, jak dokončit tyto dva úkoly, je použít omezovače rozsahu pro každý z nich:
/* do task 1: */ (function() { var lynx = $$('a'); var divs = $$('div'); //(do stuff with links and divs) })(); /* do task 2 */ (function() { var lynx = $$('a'); var lis = $$('li'); //(do stuff with links and list items) })();
Bonbón! Proměnné z první úlohy mají nyní rozsah pouze v rámci svého vykonávaného funkčního rozsahu a nemohou ovlivnit ostatní JavaScript v rámci „rodičovského“ rozsahu.
Vyčistěte kód FTW! Mějte tyto techniky na paměti, když píšete kód, který bude přepracován!