Witam, dopiero zaczynam zabawę z javascriptem. Czy w tym przypadku błędem jest umieszczanie każdej zmiennej liczbaa1 i liczbaa2 w odzielnej funkcji ? ( Chiałem te 2 zmienne zrobić jako zmienne globalne, ale wtedy podane działania nie wykonywały się ) Czym to jest spowodowane ?
Kod lepiej wkleić do pastebin, bo nikt może nie chcieć pobrać ZIP od ledwo zarejestrowanej osoby.
Czy w tym przypadku błędem jest umieszczanie każdej zmiennej liczbaa1 i liczbaa2 w odzielnej funkcji ?
Nie jest to błędem.
Chiałem te 2 zmienne zrobić jako zmienne globalne, ale wtedy podane działania nie wykonywały się ) Czym to jest spowodowane ?
Nie ma to znaczenia jeśli w każdej z tych funkcji są aktualizowane.
function mnozenie()
{
var liczbaa1 = document.getElementById("liczba1").value;
var liczbaa2 = document.getElementById("liczba2").value;
var mnozenie = document.getElementById("wynik")
mnozenie = liczbaa1 * liczbaa2;
document.getElementById("wynik").innerHTML = mnozenie;
}
To jest bez sensu, pobierasz wynik 2x, analogicznie w innnych funkcjach.
Poprawniej:
function mnozenie()
{
var liczbaa1 = document.getElementById("liczba1").value;
var liczbaa2 = document.getElementById("liczba2").value;
var wynik = document.getElementById("wynik")
var mnozenie = liczbaa1 * liczbaa2;
wynik.innerHTML = mnozenie;
}
lookacode1 napisał(a):
Czy w tym przypadku błędem jest umieszczanie każdej zmiennej liczbaa1 i liczbaa2 w odzielnej funkcji ?
Nie jest to błędem.
Chiałem te 2 zmienne zrobić jako zmienne globalne, ale wtedy podane działania nie wykonywały się ) Czym to jest spowodowane ?
Nie ma to znaczenia jeśli w każdej z tych funkcji są aktualizowane.
Ma to znaczenie i jest to potencjalnym trudnym do zlokalizowania błędem. Wyobraź sobie sytuację, kiedy w pętli po zmiennej globalnej wykonujesz jakąś funkcję, a ta funkcja modyfikuje tę zmienną globalną. Możesz zapętlić skrypt w nieskończoność albo wykonać tylko część zamierzonych iteracji. W bardziej skomplikowanych przypadkach możesz nawet zniszczyć dane użytkownika.
Każda funkcja powinna działać tylko na swoich argumentach i swoich zmiennych lokalnych za wyjątkiem pewnych specyficznych sytuacji (np. dostęp do window.location
), każda metoda to samo + pola/właściwości obiektu.