Wpis z mikrobloga

#javascript #webdev cumple, bo dłubię noobskie rzeczy i blokuje mnie jedna rzecz

- mam selecta https://getbootstrap.com/docs/5.2/forms/select/

- mam funkcja1 i funkcja2

- mam obiekt
'a': funkcja1
'b': funkcja2

- mam wyciąganie object.keys by były one przypisywane do selecta. Tzn. dodam sobie c:funkcja3, to będzie ta opcja 'c' dostępna z listy

- mam listenera, który sprawdza i z powodzeniem odczytuje, która opcja została wybrana ale nie chce mi uruchamiać przypisanych funkcja1 i funkcja2.

Ma ktoś podpowiedź? Może to w ogóle głupi pomysł tak to rozwiązywać? Chciałem względnie łatwo dodawać nowe opcje i uniknąć łańcuszka IFów.

const array=[function1(), ]; //jeśli tu zostawię nawias, funkcja się wykonuje nawet bez wywołania


const object = {

'test':function1() }; // to samo z nawiasem tutaj

document.getElementById("select").addEventListener('change', selection);


function selection() {

Object.keys(object).forEach((elementIn) => {

if (element == this.value) {

console.log('a'); //działa, czyli znajduje w "object"

object[this.value]; // nie działa

array[0]; // też nie działa

}

});

}


Z tymi nawiasami wyżej, to jeśli je zostawię, funkcja się sama wykonuje, ale w konsoli puszczając alloys2[0]; daje object undefined. Jeśli nawiasy usunę, to to samo zwraca wypisuje w konsoli treść funkcji, ale jej nie uruchamia :/
  • 3
@foneswein: Tak to opisałeś, że strzelam o co ci chodzi

jak dajesz function1() to ją wykonujesz niezależnie od miejsca, jak dasz samo function1 to jest to referencja do funkcji i jeżeli dasz [function1] i później chcesz ją odpalić \ tej tablicy to dajesz tablica[0]()
@lobo: feels good, dzięki

zacząłem próbować wszystkiego na Twoim kodzie i już wiem o co chodzi. Nawiasy z pierwszego komentarza wczoraj się nauczyłem, że mają znaczenie.

okroiłem to do tego i zauważ, ze alert dupa wykonuje się tylko z uwagi na nawiasy w wierszu 10

function a() {
alert("dupa");
}

const arr = [a];
const c = [a];

const obj = {
a: "abc",
b: a(),
c: a
};

c[0];
alert(obj["a"]);