Co byste měli vědět o JavaScriptu [2]: JavaScript nemá „block-level scope“

V dnešním velice krátkém dílu se zmínim o drobnosti, kterou by měli mít na paměti hlavně programátoři přicházející z jazyků jako je Java či C#. Vývojáře znalé třeba PHP ale zajisté nijak nezaskočí, ti zde budou jako doma. V JavaScriptu (podobně jako v PHP) je totiž lokální proměnná platná vždy v rámci celé funkce.

Oproti tomu ve zmiňované Javě je platnost omezena na blok kódu.

// Java
public void funkce() {
    int  i = 10;
    for (int i =0; i < 15; i++) {
        System.out.println("Uvnitr bloku i: " + i);
    }
    System.out.println("Vne bloku i: " + i);

}

V uvedném kódu překryje proměnná i deklarovaná v záhlaví cyklu vnější proměnnou i.

V Javascriptu ale následující zápis postrádá smysl:

// JavaScript
function funkce() {
    var i = 10;

    for (var i = 0; i < 6; i++) {
        //neco...
    }

    for (var i = 0; i < 68; i++) {
        //neco jineho
    }

}

Proměnná i bude prostě jenom jedna, bez ohledu na počet použití klíčového slova var.

S oborem platnosti na úrovni funkce silně souvisí další zajímavá vlastnost, nazývaná „variable hoisting“. Proberu ji příště.

Co byste měli vědět o Javascriptu [1]: proměnná a globální obor platnosti

prvním díle miniseriálu zmíním jedno z nejznámějších špatných míst Javascriptu. V anglicky psaných zdrojích bývá označován termínem „implied global“. Jde o velice důležitou vlastnost jazyka, jejíž znalost (a hlavně plné pochopení důsledků) vám může ušetřit mnoho vytrhaných vlasů.

Continue reading

Co byste měli vědet o Javascriptu [0]: Úvod

Rezervovaná slova JavaScriptu (výběr těch, která mají význam Vítejte v úvodním příspěvku průvodce po temných i světlých zákoutích JavaScriptu. Každý týden tu naleznete kratší zápisky o různých vlastnostech jazyka, které je dobré znát.

JavaScript je mezi programovacími jazyky výjimečný tím, že většina z nás k němu přijde bez jakýchkoliv znalostí. Syntaxe je podobná jazykům vycházejícím z C a za pomoci (většinou mizerných) tutoriálů na internetu dokáže spatlat „nějak“ funkční kus kódu každý. Mnohdy si člověk vystačí bez pořádných znalostí jazyka poměrně dlouho a než se naděje, tvoří už svojí první velkou Javascriptovou věc. A pak to může dost bolet. V JavaScriptu (podobně jako v ostatních jazycích) existuje mnoho temných zákoutí, jejichž neznalost velice zkomplikuje vývojářův život. A naopak má svoje silné stránky, jejichž pochopení mu může pomoci dosáhnout výsledků rychleji, lépe a dokonce zábavněji ;-) . Ostatně, už jsem o tom nedávno psal.

Nebudu se zde zabývat základními konstrukcemi jazyka, jejichž popis se válí na každém internetovém rohu. Chci se spíš soustředit a informace, které bývají (bohužel) často v materiálech pro začátečníky opomíjeny nebo dokonce(!) uváděny špatně. Obvyjkle programátoři neznají ani po mnoha letech občasného užívání Javascriptových pilulek, nebo jim úplně nerozumí.

Seriál má vlastní štítek a také vlastní RSS.

Držte si čepice, přístí týden začínáme!

Aktualizace: zatím vyšlo

Zatím v seriálu vyšly následující články:

  1. proměnná a globální obor platnosti
  2. Javascript nemá ‚block-level scope‘
  3. variable hoisting
  4. deklarace funkce a funkce jako výraz
  5. with je zlý čaroděj

Střípky ze světa webu, Javascriptu a vůbec …

Ilustrace

Aneb co mě zaujalo v posledním týdnu? Nezávisle na tom, zda jde o aktuální novinky, nebo jsem objevil ameriku :)

The Noded je nový podcast o node.js. Natolik nový, že tvůrci stále nedokázali stvořit web. První díl je ale ke stažení a můžete také sledovat @thenoded na twitteru. Alespoň v prvním dílu se podcast hojně věnuje NodeCore, takže varuji před spoustou „céčkovských“ termínů a témat.

Firefox 4 bude obsahovat jednoduchou vývojářskou konzoli. Vývojáří rozšíření Firebug reagují: „Simply working harder to compete is equal to giving up. Instead we have to raise the bar!“ Držím palce.

Společnost Sencha zveřejnila developer preview aplikace Sencha Animator. Mělo by jít o CSS3 alternativu k Flashi. Vypadá velice zajímavě. Jen škoda, že se mi ji nepodařilo ani spustit.

Na blogu DailyJs vychází již od února seriál Let's Make a Framework. Autor postupně prochází různé kroky tvorby jednoduchého javascriptového frameworku od architektury, přes implementaci selektorů, obsluhu událostí až po podporu pluginů. Vznikající framework samozřejmě nemá být konkurencí existujícím hvězdám, ale jen učební pomůckou. Pokud je pro vás fungování vašeho oblíbeného JS frameworku magií a nechce s vám hned studovat jeho kód, doporučuji projít aspoň tento seriál.

Podpora pri indexaci AJAXových aplikací od Google a video záznam z přednášky Using Node.js and YUI 3 na YUI Theater spolu souvisí. Kdo pozná jak, má u mě zmrzlinu. :)

Promote.js: za lepší dokumentaci Javascriptu

JS String .substring

Zkusili jste někdy do vašeho oblíbeného vyhledávače zadat termín ‚javascript‘? Nebo nějaké slovní spojení týkající se dokumentaci či učení javascriptu? Na prvních pozicích se objevují stránky jako w3schools.com, javascript.com. Prostě staré a nepříliš kvalitní zdroje oblepené reklamou.

Účastníci nedávné konference JSConf v Berlíně se rozhodli, že je potřeba se současnou situací něco udělat. Tak vzniklo „hnutí“ Promote.js. Stačí navštívit uvedenou stránku, zkopírovat náhodně vygenerovaný kód obrázku s odkazem a vložit ho do svého webu, který by se ideálně měl alespoň trochu zabývat javascriptem. Výsledek můžete vidět v pravém sloupci mého zápisníku.

Odkazy jsou náhodně vybírané z databáze a cílí i na konrétní pojmy (javascript array, object a podobně). Z počátku směřovaly všechny vygenerované odkazy na stránky Mozzila Developer Center, které obsahují poměrně pěknou dokumentaci jazyka a souvisejících témat. Postupně přibývají další zdroje (můžete sami nějaký navrhnout pomocí kontaktů na stránce). Všiml jsem si například odkazů na některé obecně javascriptové články na blogu howtonode.

A funguje to? Zatím částečně. Průběžné výsledky včetně grafu vývoje naleznete na stránce arewefirstyet.com. A abych nezapomněl, @promotejs je samozřejmě i na twitteru.

Tak šup s odkazem na web!