Hogyan lehet javascriptben egy function-ből átvinni egy változót egy másik function-be?
Itt egy konkrét példa:
function help(){
var x = "help";
}
function me(){
alert(x); //itt nem működik...
}
Nyilván nem megy, mert { ... } külön tér. Amit abban definiálsz, az csak ott létezik, de lefele továbbra is él.
pl.: A { B { C } }
Az "A" térben csak az "A" dolgai vannak. A "B" térben az "A" és a "B"-k, és ugyanígy a "C" helyen az A-B-C dolgokat látod. DE! Ha azonos változó nevet használsz, akkor ideiglenesen írod felül! Azaz:
var x = 0
{ var x = "A" (itt "A" lesz) }
(itt ismét 0 lesz, mert kijöttél a blokkvól és a felülírt x elveszett)
A többit következtesd ki, jöj rá a megoldásra. ;)
De nem sikerült :c A chrome ezt írja ki: Uncaught ReferenceError: crea is not defined
at HTMLButtonElement.onclick (index.html:118)
function me(y){
alert(y);
}
function help(){
var x = "help";
me(x);
}
^ X értékét átadod me() -nek, ami y néven fogja ismerni az értéket ebben az esetben.
Vagy globális változóként:
window.x;
function me(y){
alert(y);
}
function help(){
x = "help";
}
"kb ezt írtad?"
Nagyjából igen. Scope-on belül (azaz {...} <- itt) marad a változó. Elég problematikus lenne, ha az egész alkalmazás egy halmazt használna, és 4000 változó mellet azon rágnád a körmöd, melyiket írod felül és omlik össze a rendszer. Szóval a változó (családon belül) scope-on belül marad.
Kijuttatni ugye
- vagy: return
- vagy kihivatkozol egy felette lévő változóra
Ahogy az #5 írja.
Ott egy globális változó a windiw (és társai: pl.: document) és az egyik eleme az x.
De ugyanazt érnéd el, ha:
var x = "alma";
function() {
... x = "korte"; // kihivatkozol
}
f()
x // már körte
Böngésző console:
> var x = "alma"
> function asd() { x = "korte" }
> asd()
> x
< "korte" // x output
> var a = "a"
> function af() { var a = "b" }
> af()
> a
< "a" // a output
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!