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

Modyfikacja zmiennej lokalnej na podstawie innej zmiennej lokalnej

Object Storage Arubacloud
+1 głos
120 wizyt
pytanie zadane 20 sierpnia 2015 w JavaScript przez ScriptyChris Mędrzec (190,190 p.)

Mam 2 funkcje foo1() i foo2():

function foo1()
{
    var value = "200";
};

function foo2()
{
   var value2 = ...    // Jak przyrównać value2 do value z foo1()?
};

Chciałbym, aby zmienna value2 była równa zmiennej value, ale ze względu na scope (obie zmienne są lokalnymi wewnątrz ich funkcji) raczej nie mogę tego zapisać value2 = value. Wobec tego czy jest to możliwe, a jeśli tak - to jak to zapisać?

1 odpowiedź

0 głosów
odpowiedź 20 sierpnia 2015 przez Comandeer Guru (601,110 p.)
wybrane 22 sierpnia 2015 przez ScriptyChris
 
Najlepsza
Coś kombinujesz - tyle Ci powiem patrząc na to, co chcesz zrobić ;)

Powiedziałbym: observables, ale to jest armata na muchę. Zawsze można to podciągnąć pod settery, ale wówczas i tak musiałbyś to przerobić na obiekty.
komentarz 20 sierpnia 2015 przez ScriptyChris Mędrzec (190,190 p.)

Nie kombinuję, tylko chce zapisać pewne zależności między funkcjami.

Jeśli to pomoże, to tu jest cały kod: http://jsfiddle.net/Chriss92/11jcerv6/1/

Chciałbym, aby nie dało się wypłacić więcej niż jest to zapisane w funkcji checkAccountStatus() czyli 1000PLN. Każda funkcja programu odpowiedzialna za podmenu ustawia po swojemu zmienne dotyczące ilości wprowadzanych znaków maxDigitLength. Chciałbym, aby ta zmienna w funkcji withdrawMoney() miała tą samą wartość, co w funkcji checkAccountStatus(), bo zakładam teoretycznie, że wartość będzie się zmieniać - więc chcę aby nie można było wypłacić większej wartości niż ta która jest na koncie. Jak to inaczej rozwiązać niż poprzez uzależnienie jednej zmiennej lokalnej od innej zmiennej lokalnej?

Przykładowo - na początku jest 1000PLN, ale potem wpłacając coś (przez depositMoney()), wartość ta (w checkAccountStatus()) zmieni się. Tak samo przy wypłatach (przez withdrawMoney()). I chcę, aby to wszystko się zmieniało dynamicznie w stanie konta.

komentarz 20 sierpnia 2015 przez Comandeer Guru (601,110 p.)

Uzależnić od zmiennej w lokalnym scope:

(function()
{
    var account = 1000;


    function withdrawMoney(ammount)
    {
        account -= ammount;
    }


    function depositMoney(ammount)
    {
        account += ammount;
    }
}());

 

komentarz 22 sierpnia 2015 przez ScriptyChris Mędrzec (190,190 p.)
Dzięki.

Czy lepiej unikać globalnych zmiennych i robić funkcje (np. IIFE) i w nich umieszczać to, co ma działać w jakichś wzajemnych zależnościach? Jeśli tak, to kiedy przydaje się tworzenie globalnych zmiennych?
1
komentarz 22 sierpnia 2015 przez Comandeer Guru (601,110 p.)

Nigdy… ;) Chyba że do wystawiania API pod namespace, np window.jQuery. Do niczego innego raczej się nie przydaje. Obecnie zresztą i tak stosuje się moduły UMD/AMD/CJS/ES6 i zmienne globalne praktycznie nie istnieją.

Podobne pytania

0 głosów
1 odpowiedź 122 wizyt
pytanie zadane 28 września 2019 w JavaScript przez niezalogowany
+1 głos
2 odpowiedzi 242 wizyt
0 głosów
2 odpowiedzi 344 wizyt
pytanie zadane 19 sierpnia 2019 w C i C++ przez Mavimix Dyskutant (8,390 p.)

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...