Problem z kodem wyliczającym datę - Unexpected token {

0

Witam.

Nigdy nie miałem styczności z JavaScript i dopiero zaczynam się uczyć. Potrzebuję napisać kod, który będzie wyliczała mi datę, a konkretnie rok. Korzystając z kursów i poradników napisałem poniższą instrukcję. Podczas sprawdzenia pojawi się błąd Unexpected token {. Niestety nie mam pojęcia o co może chodzić, dlatego proszę o pomoc. Kod będzie użyty w raporcie jako nowe pole.

const currentDate = new Date();
const currentMonth = currentDate.getMonth();

IF(currentMonth < 9) {
    const text = (currentDate.getYear()-1) + "/" + currentDate.getYear();
    }
ELSE {
    const text = currentDate.getYear() + "/" + (currentDate.getYear()+1);
}
2

To wina wielkości znaków dla if and else.

const currentDate = new Date();
const currentMonth = currentDate.getMonth();

if(currentMonth < 9) {
    const text = (currentDate.getYear()-1) + "/" + currentDate.getYear();
    }
else {
    const text = currentDate.getYear() + "/" + (currentDate.getYear()+1);
}
0

Pojawił się kolejny błąd, tym razem - Identifier 'currentDate' has already been declared.

1

Przecież masz wprost napisane, co jest nie tak: taka zmienna już istnieje.
Korzystając z const oraz let nie możesz przesłaniać już istniejacych zmiennych w tym samym scope'ie.

0
var currentDate = new Date();
var currentMonth = currentDate.getMonth();
var text;

if (currentMonth < 9) {
    text = (currentDate.getYear() - 1) + "/" + currentDate.getYear();
}
else {
    text = currentDate.getYear() + "/" + (currentDate.getYear() + 1);
}

Końcowy kod. Czy teraz wszystko jest w porządku? Żadnych błędów na razie nie ma.

0

Rozwiązaniem z widocznością zmiennych nie jest zamiana na pałę let / const na var ;-)
Najpierw dojdź do tego, dlaczego Ci tamten błąd wyrzuca.

Odpalasz kod z poziomu konsoli deweloperskiej?

0
let currentDate = new Date();
let currentMonth = currentDate.getMonth();
let text;

if (currentMonth < 9) {
    text = (currentDate.getYear() - 1) + "/" + currentDate.getYear();
}
else {
    text = currentDate.getYear() + "/" + (currentDate.getYear() + 1);
}

Dobra, poprawiłem po raz kolejny. Teraz jak?

const to stała, której wartości nie można zmienić po wcześniejszym przypisaniu. Natomiast let służy do deklaracji zmiennych, czyli można zmieniać wartości. Deklarować należy na początku. W przypadku var można deklarować w środku kodu i js przeniesie deklarację na początek, ale bez jej wartości. Dobrze? :)

Kod sprawdzam na http://jslint.com/, a samej funkcji potrzebuję użyć w raporcie BIRT w Eclipse.

Edit:
Jak robię var-ami to nie ma błędu, a jak używam let to pojawia się błąd:

screenshot-20180710112014.png

0

Być może tamten expression builder nie obsługuje ES6 w takim razie :-P

0

Dlaczego, jak uruchamiam program na tej stronie - https://www.learn-js.org/ to w wyniku otrzymuję 117/118, a nie 2017/2018?

1

Ponieważ nie przeczytałeś dokumentacji: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getYear

For years greater than or equal to 2000, the value returned by getYear() is 100 or greater. For example, if the year is 2026, getYear() returns 126.

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