Argumenty Funkcja

Szymon Swiercz
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 11
0

Cześć, mam problem chce wywołać 2 razy tą samą funkcję, ma ona tworzyć divy w zależności od wartości parametru x. Czy jest jakaś możliwość podania argumentu do tej funkcji bez wywoływania jej ?
const pokaz = (x) =>{

for(let i=0;i<x;i++){
const door = document.createElement("div");

const pojemnik = document.querySelector("div");
pojemnik.appendChild(door);
door.classList.toggle("drzwi");

}

}

guzik.addEventListener("click",pokaz);
guzik1.addEventListener("click",pokaz);

ON
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Polska
2

To się nazywa 'currying' ( nie wiem jak to na polski poprawnie przetłumaczyć :D )
W twoim przypadku powinno wyglądać to tak

Kopiuj
const pokaz = (x) => () => {
}

guzik.addEventListener("click", pokaz);
guzik1.addEventListener("click", pokaz);

Więcej możesz się dowiedzieć https://blog.bitsrc.io/understanding-currying-in-javascript-ceb2188c339

PS, proponuję zacząć pisać kod w języku angielskim na pewno się w przyszłości przyda :)

Tomek Opole
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Opole
  • Postów: 15
0

Może coś takiego:

Kopiuj
guzik.addEventListener("click", () => {pokaz(2);});
guzik1.addEventListener("click", () => {pokaz(15);});

PH
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 374
0

Można stworzyć closure.

Kopiuj
let fn = (value) => {
   return (value2) => {
      // wartosc value jest zawsze 4 (chyba ze nadpiszesz ja w tej funkcji)
      // wartosc value2 to w naszym przypadku kolejno 10 i 20 - te wartości są niezależne od siebie. ale prawdopodobnie tobie nie potrzeba value2 lecz tylko value1
      console.log(value, value2);
   }
}

let myFunction = fn(4);
myFunction(10)
myFunction(20)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.