Zmienna nie jest zdefiniowana

0
let score, x, y;

function add(x, y) {
    score = x + y;
    console.log(score)
    return score;
}

add(2, 4);

function f1(...score) {
    if (score % 2 == 0) {
        console.log(`${x} jest parzysta`)
    }
    return f1;
}

function f2(...score) {
    if (score % 2 == 1) {
        console.log(`${x} jest nieparzysta`)
    }
    return f2;
}

if (score % 2 == 0) {
    f1();
}
else {
    f2();
}

screenshot-20231211084852.png

how to fix that

2

score masz nie zainicjowane; w ogóle dziwne to coś w czym piszesz, czemu nie rzuca name error w linijce 25? Powinien być jeszcze jeden błąd, zadeklarowałęś zmienne, a nie nadałeś im wartości.

0
function f2(...score) {
    if (score % 2 == 1) {
        console.log(`${x} jest nieparzysta`)
    }
    return f2;
}

a tu nie powinno być console.log(`${score} jest nieparzysta`)?

3

Przy takim zapisie:
f1(...score)
score jest jako lista, na pewno tak ma być?

0

@szok: ja nie rozumiem czemu piszecie lista jak to jest tablica array.
Czemu nie napisał funcxkaj nazwa(array zmienna) { bot taka składniato jest
To jest tablica !! Array

1

To działa trochę inaczej.

Jeśli masz taką funkcję:

 function f1(...score) {
 }

To nie bierze ci zmiennej globalnej score, tylko tworzy ci nową lokalną zmienną, która będzie zawierała tablicę z wartościami argumentów.

Ponieważ uruchamiasz tę funkcję tak:

f1()

to zmienna lokalna score będzie pustą tablicą [], skoro nie podajesz żadnych argumentów.

Dalej, to co widzę, że używasz w funkcjach f1 i f2 zmiennej x. Tylko, że te funkcje nie definiują takiej zmiennej, więc x to w tym przypadku będzie ta zmienna z zewnątrz funkcji, której nie inicjujesz przecież, więc będzie undefined.

let score, x, y;

Ogólnie więc mam wrażenie, że pomyliło ci się, która zmienna gdzie jest widoczna. Zmienne muszą być gdzieś zadeklarowane.

1 użytkowników online, w tym zalogowanych: 0, gości: 1