Op dinsdag 26 februari 2002 11:26 schreef crisp het volgende:
Even de
jsguide erop nageslagen; daar wordt je ook niet veel wijzer van
Ik begrijp het volgens mij aardig...
Ik zal het proberen uiteen te zetten.
Wanneer je een globale variabele declareert met var gebeurt het volgende:
code:
1
2
3
4
5
6
| var varnaam;
^ ^
|____|____> He, ik ga een variabele bewaren...
| hmm in welke scope zit ik?
| daar hoortie nl. bij! Ahhh, global, ok...
|____> Goed, we noemen 'm varnaam. |
Bij een function gebeurt 't zelfde, alleen wordt de variabele weggegooid wanneer de scope "afloopt":
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| function f ()
{ <---------- He krijg nou niks, een nieuwe scope.
We noemen m f.
var varnaam;
^ ^
|____|____> He, ik ga een variabele bewaren...
| hmm in welke scope zit ik?
| f, zie ik... hmhm
|____> Goed, we noemen 'm varnaam.
} <----------- He, de scope rondt af... Welke variabelen hadden
we allemaal? ... 's kijken, ah "varnaam".
Oppleuren die zooi, scope is klaar. |
Maar, wanneer je nu geen variabele declareert, weet de compiler ook niet in welke scope hij thuishoort. Hij zal omhoog gaan langs alle scopes (de stack) om te kijken of hij bestaat, en zo niet, zal hij hem aanmaken. En dan vind ik het niet zo gek dat hij die variabele dan aanmaakt in de scope waar hij het
laatst gekeken heeft of hij bestaat, namelijk de global scope.
Je
hoeft de variabele tenslotte niet te declareren, om hem "aan te maken"
hmmm beetje vaag verhaal, maar snappen jullie wat ik bedoel?