/ Forside / Teknologi / Udvikling / Java Scripts / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
lokale variabler i Javascript
Fra : scootergrisen


Dato : 15-06-11 03:20

Kan man have lokale variabler i Javascript ?

Så man kan skrive sådan her på samme side og så variablerne bliver
behandler som forskellige variabler selvom de hedder det samme.

<script...>
var navn = "ost";
</script>
<script...>
var navn = "mus";
</script>

Jeg vil gerne have at variablen navn har sit eget "scope" inde i hver
sin <script> så jeg ikke skal skrive navn1 og navn2.

 
 
Birger Sørensen (15-06-2011)
Kommentar
Fra : Birger Sørensen


Dato : 15-06-11 11:26

scootergrisen forklarede den 15-06-2011:
> Kan man have lokale variabler i Javascript ?
>
> Så man kan skrive sådan her på samme side og så variablerne bliver
> behandler som forskellige variabler selvom de hedder det samme.
>
> <script...>
> var navn = "ost";
> </script>
> <script...>
> var navn = "mus";
> </script>
>
> Jeg vil gerne have at variablen navn har sit eget "scope" inde i hver
> sin <script> så jeg ikke skal skrive navn1 og navn2.

Nej.
Alle dine script bliver samlet til eet af browseren. Globale variable
med samme navn, kendes af hele scriptet, og er den samme.
Du kan have forskellige variable med samme navn inde i funktioner, men
ikke globalt.
Jeg ved ikke om det er muligt at bruge namespace i js. Mener måske
heller ikke at der er nogen god grund til det.
Dit eksempel er et godt eksempel på hvorfor det er nødvendigt at bruge
sigende navne til sine variable.
Hvorfor har du brug for det?

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Martin Larsen (15-06-2011)
Kommentar
Fra : Martin Larsen


Dato : 15-06-11 11:50

Birger Sørensen wrote:

> Jeg ved ikke om det er muligt at bruge namespace i js

Ikke rigtigt, men man kan samle sine variabler i closures. Det bruges
ofte til at samle objekter i samme scope, altså som en slags namespace.

Man bruger ofte closures til at sikre sig at variabelnavne ikke
konflikter mellem flere JS biblioteker, fx hvis man både bruger jQuery
og MooTools.

Jeg vil dog tilslutte mig ideen om at bruge sigende variabelnavne. Det
er effektivt og simpelt.

Martin

scootergrisen (20-06-2011)
Kommentar
Fra : scootergrisen


Dato : 20-06-11 04:32

> Dit eksempel er et godt eksempel p hvorfor det er n dvendigt at bruge
> sigende navne til sine variable.
> Hvorfor har du brug for det?

Det er bare et eksempel hvor variablennavnet ikke betød så meget.

Grunden til jeg gerne vil have lokale variabler er fordi jeg på samme
side skal vise flere javascript eksempler.
Og som det er nu hedder variablerne for eksempel test1, test2, test3,
test4, test5, test6 og det ville være lettere at forstå hvis de bare
hed test i alle eksemplerne.

Her er en side hvor jeg bruger ctxa i første eksempel og ctx0 i andet
og ctx1 i tredie osv :
http://scootergrisen.dk/htmlgrisen/kode_canvas_javascript.php

Hvis de kunne hedde ctx i alle eksempler så ville det være bedre.
Jeg prøver og kigge på de eksempler i har givet og se om jeg kan finde
på noget smart.

Martin Larsen (20-06-2011)
Kommentar
Fra : Martin Larsen


Dato : 20-06-11 12:08

scootergrisen wrote:

> Hvis de kunne hedde ctx i alle eksempler så ville det være bedre.
> Jeg prøver og kigge på de eksempler i har givet og se om jeg kan finde
> på noget smart.

Det kan du med closures, som nævnt. Googl på javascript closure, så vil
du finde masser af info.

Fx
http://robertnyman.com/2008/10/09/explaining-javascript-scope-and-closures/

Lasse Reichstein Nie~ (15-06-2011)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 15-06-11 18:36

scootergrisen <scootergrisen@gmail.com> writes:

> Kan man have lokale variabler i Javascript ?

Variable erklæret inde i en funktionskrop er lokale til en udførsel
af funktionen.
I.e.,
function foo(x) {
var navn = x;
}
foo("ost");
foo("mus");
vil erklære to forskellige variable med navn "navn".

> Så man kan skrive sådan her på samme side og så variablerne bliver
> behandler som forskellige variabler selvom de hedder det samme.
>
> <script...>
> var navn = "ost";
> </script>
> <script...>
> var navn = "mus";
> </script>

Nej, de er begge erklæret i det globale scope, så det er den samme
variabel.

> Jeg vil gerne have at variablen navn har sit eget "scope" inde i hver
> sin <script> så jeg ikke skal skrive navn1 og navn2.

Det gøres typisk ved at pakke hver del ind i sin egen funktion, så
de får hvert sit scope.:

<script>
(function() {
var navn = "ost";
... noget der bruger variablen ...
})();
</script>
<script>
(function() {
var navn = "nus";
... noget andet der bruger den anden variabel ...
})();
</script>

Hvis man så skal erklære både lokale og global variable, så bliver
man nødt til at dele sin kode op, så den lokale del er pakket ind
i funktionen og den globale er udenfor, fx.:

// Funktion der er uafhængig af lokal variabel.
function globalfunk() { return 10; }
var globalfunkderkenderlokal;
var globalvar;
(function(){
// Den hemmelige lokale variabel.
var lokal = 42;
// Globale variable hvis værdi afhænger af noget lokalt skal
// erklæres udenfor, men initialiseres inde i funktionen.
globalvar = lokal * 2;
// Funktioner der skal have adgang til lokal-variablen
// skal skabes inde i funktionen.
globalfunkderkenderloak = function() { return lokal; }
})();

Held og lykke
/L
--
Lasse Reichstein Holst Nielsen
DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste