• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Globalny dostęp do zmiennych w funkcjach.

+2 głosów
98 wizyt
pytanie zadane 28 lipca 2021 w JavaScript przez lucasio99 Nowicjusz (200 p.)

Dzień dobry,

to mój pierwszy post na forum.

Ale do rzeczy: temat dotyczy zapytania, jak globalnie zmienić wartość globalnej zmiennej w funkcji.

Skrypt to discordowy bot, tak więc używany jest node, nie jest to typowo webowa aplikacja.

let zmienna1 = {wartosc1: 0, wartosc2: 1, wartosc3: 2};

function funkcja1() {
zmienna1.wartosc1 = 1;
}

function funkcja2() {
console.log(zmienna1.wartosc1);
}

Wynik wygląda zaś:

0

Więc: jak globalnie zmienić wartość globalnych zmiennych w funkcji?

 

Z góry dzięki za pomoc

komentarz 28 lipca 2021 przez Zaqu93 Gaduła (4,640 p.)
A wywołujesz te funkcje? Bo jeśli nie to ciężko żeby się podmieniło.
komentarz 28 lipca 2021 przez lucasio99 Nowicjusz (200 p.)
No raczej...
komentarz 28 lipca 2021 przez Zaqu93 Gaduła (4,640 p.)
let variable = {one: 1, two: 2, three: 3};

function change(variable) {
  variable.one = 4;
}

change(variable);

console.log(variable);

musisz podać zmienną jako argument do funkcji.

komentarz 28 lipca 2021 przez lucasio99 Nowicjusz (200 p.)
próbowałem to, ale sprawdzę jeszcze raz, może coś pominąłem, i dam znać za jakieś 2 minuty
komentarz 28 lipca 2021 przez lucasio99 Nowicjusz (200 p.)
let example = {one: 0, two: 1, three: 2};

	function changeEx(example) {
		example.one = 1;
	}

	if (msg.content === '~dev') {
		changeEx(example);
		console.log(example.one);
	}

To mój kod, którym to sprawdziłem, i wygląda na to, że działa.

	let example = {one: 0, two: 1, three: 2};

	function changeEx(example) {
		example.one = 1;
	}

	function showEx() {
		console.log(example.one);
	}

	if (msg.content === '~dev') {
		changeEx(example);
		showEx();
	}

Jeszcze dla pewności sprawdziłem komunikację między funkcjami.

I wynik to 1, czyli dobrze.

Czyli wygląda na to, że musiałem coś przeoczyć, i chyba wiem co. Wielkie dzięki za pomoc. Ale powiedz mi jeszcze, wiele takich zmiennych to trzeba oddzielać przecinkiem?

function blabla (zmienna, zmienna, niezmiennaxd) {}

 

3
komentarz 28 lipca 2021 przez ScriptyChris Mędrzec (171,780 p.)

musisz podać zmienną jako argument do funkcji.

@Zaqu93, nie musi. Na tym polegają zmienne w wyższym scope (w tym globalne), że nie trzeba ich przekazywać do funkcji w parametrze, aby mieć do nich dostęp.

@lucasio99, Twój kod działa, tylko musisz najpierw wywołać funkcja1 (żeby zmienić property w obiekcie), a dopiero potem funkcja2 (żeby wyświetlić zmienną z aktualną, zmienioną wartością). Wywołanie w odwrotnej kolejności lub nie wywołanie funkcja1 nie pokaże zmienionej wartości.

3
komentarz 28 lipca 2021 przez ScriptyChris Mędrzec (171,780 p.)

wiele takich zmiennych to trzeba oddzielać przecinkiem?

@lucasio99, tak - każdy argument funkcji musi być oddzielony przecinkiem. Ale można wszystkie argumenty lub ich przyrostową część pobrać/odczytać jako listę, przy pomocy rest parameters, ewentualnie obiektu arguments (w tym przypadku można całkowicie pominąć listowanie argumentów w nagłówku funkcji).

komentarz 28 lipca 2021 przez VBService VIP (144,910 p.)
edycja 28 lipca 2021 przez VBService

Podaję link, bo pasuje do tytułu pytania (Moim zdaniem), dla początkujących, którzy tu trafili, nie sugeruję, że autor pytania nie posiada już tej wiedzy.  smiley

Zasięg zmiennych - javascript

 

wiele takich zmiennych to trzeba oddzielać przecinkiem?

Domyślne wartości funkcji - to do tego co już podał @ScriptyChris

komentarz 28 lipca 2021 przez Wiciorny Mędrzec (197,420 p.)

tak tu też warto poznać mechanizm Hoistingu w javascript nie tylko dla zmiennych, ale i funkcji 

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

+1 głos
1 odpowiedź 172 wizyt
+4 głosów
1 odpowiedź 107 wizyt
0 głosów
1 odpowiedź 100 wizyt

86,486 zapytań

135,241 odpowiedzi

300,488 komentarzy

57,234 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...