• 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
94 wizyt
pytanie zadane 28 lipca 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 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 przez lucasio99 Nowicjusz (200 p.)
No raczej...
komentarz 28 lipca 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 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 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 przez ScriptyChris Mędrzec (168,340 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 przez ScriptyChris Mędrzec (168,340 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 przez VBService VIP (136,750 p.)
edycja 28 lipca 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 przez Wiciorny Mędrzec (184,850 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ź 153 wizyt
0 głosów
1 odpowiedź 98 wizyt
Porady nie od parady
Forum posiada swój własny serwer Discord, dzięki któremu będziesz mógł po prostu pogadać z innymi Pasjonatami lub zapytać o jakiś problem. Podstrona z chatem znajduje się w menu pod ikoną człowieka w dymku.IRC

85,727 zapytań

134,512 odpowiedzi

298,568 komentarzy

56,635 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.

...