ugrás a tartalomhoz

Javascript scope

zoliky · 2007. Júl. 14. (Szo), 11.10
Hello,
Kezdo vagyok JavaScript teren! Egy konyvet tanulmanyozok amely leirja hogyan mukodik a variable scope.

PHP-ben:
function test()
{
   $a = 4;

   return $a
}
Az $a erteke csak a fugvenyen belul lesz 4. Ha peldaul kivul is szeretnem hasznalni igy kell irjam:
function test()
{
   global $a;
   $a = 4;

   return $a
}
Ok visszaterek a JavaScript-hez. Azt olvastam, hogy egy valtozo akkor global JavaScript-ben ha nincs elotte a "var".

Egy pelda:

function test()
{
    a = 4;
    return a;
}
Ez tenyleg igy igaz? vagy letezik JavaScript alatt is egy "global" sor a valtozo szamara?

Koszonom!
 
1

Igaz

Ajnasz · 2007. Júl. 14. (Szo), 12.14
Igaz
2

Nem pont

Pusztai Tibor · 2007. Júl. 14. (Szo), 15.50
Igaz, de azért nem pont így.
Ha van a függvény számára elérhető változó, akkor az "a = 4" annak az értékét változtatja meg. Ha nincs, akkor létrehoz egy új, teljesen globálisat, és annak adja értékül. (Bár a létrehozásra szerintem szebb és átláthatóbb, ha a globális objektumot bővítjük ki /böngészőkben window/) Tehát nem biztos, hogy globális változót fogsz megváltoztatni, ha azt mondod, hogy "a = 4". Ellenben a "window.a = 3" majdnem biztosan globális változót változtat meg. Hacsaknem nem böngészőben vagy, vagy a window is el van takarva. :) A legbiztosabb (és legidegenebb) a "(function() {return this})().a = 4".
Ha "var" van előtte, akkor pedig létrehoz egy helyi változót, ami a függvényen belül (tehát a függvényen belüli függvényeken belül is) elérhető lesz. Kb. mint pascal-ban vagy ada-ban, csak ott nem tudsz létrehozni belülről.