Argumenty Funkcja

Szymon Swiercz
  • Rejestracja:ponad 5 lat
  • Ostatnio:około 5 lat
  • 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:około 6 lat
  • Ostatnio:około 7 godzin
  • 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 :)

edytowany 1x, ostatnio: Ostatni Ninja
Tomek Opole
  • Rejestracja:prawie 7 lat
  • Ostatnio:28 dni
  • Lokalizacja:Opole
  • Postów:15
0

Może coś takiego:

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

PH
  • Rejestracja:ponad 5 lat
  • Ostatnio:około rok
  • 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.