Prázdný objekt vs. prázdný řetězec, Jak vědět, který použít?

0

Otázka

Oba tyto globální proměnné práci v kódu.

Jak víte, který je ten pravý, pokud oba pracují v kódu?

Bylo mi řečeno, že jeden je ten pravý, ale jak víte, který z nich použít?

Pokud oba pracují v kódu?

Také jsem právě řekl, tyto absolutně není to samé pod kapotou. Zatímco kód může spustit a zobrazí se v obou JSFiddle verze, ve skutečnosti to není.

Může mi někdo pomoci pochopit, což je správně používat a proč?

let currentPlayButton = {}; 

https://jsfiddle.net/n5cpvtok/

let currentPlayButton = “”;

https://jsfiddle.net/n5cpvtok/1/

let currentPlayButton;

https://jsfiddle.net/bo5jm2r6/

Já nevidím rozdíl.

Když svg jsou klikli, se fade out.

Což je očekávané chování.

  const manageCover = (function makeManageCover() {
  const config = {};
  const body = document.body;
  let currentPlayButton = {};

  function show(el) {
    el.classList.remove("hide");
  }

  function hide(el) {
    el.classList.add("hide");
  }

  function hideAll(elements) {
    elements.forEach(hide);
  }

  function resetBackground(backgroundSelector) {
    const allBackgrounds = document.querySelectorAll(backgroundSelector);

    function hideBackground(background) {
      background.classList.add("bg1");
    }
    allBackgrounds.forEach(hideBackground);
  }

  function resetButtons(buttonSelector) {
    const allButtons = document.querySelectorAll(buttonSelector);

    function hideButton(button) {
      button.classList.add("isOpen");
    }
    allButtons.forEach(hideButton);
  }

  function resetPage() {
    resetBackground("body");
    resetButtons(".outer");
  }

  function markAsPlayed(played) {
    played.classList.add("played");
  }

  function showCover(playButton) {
    hideAll(config.containers);
    resetPage();
    markAsPlayed(playButton);
    const cover = playButton.parentElement;
    cover.classList.add("active");
    show(cover);
  }

  function animationEndHandler(evt) {
    const animationName = evt.animationName;

    if (animationName === "initial-fade") {
      body.classList.remove("initial-fade");
      showCover(currentPlayButton);
    }
  }

  function coverClickHandler(evt) {
    currentPlayButton = evt.currentTarget;
    body.classList.add("initial-fade");
  }

  function addClickToButtons(playButtons) {
    playButtons.forEach(function playButtonHandler(playButton) {
      playButton.addEventListener("click", coverClickHandler);
    });
  }

  function addCoverHandler(coverSelector, handler) {
    const cover = document.querySelector(coverSelector);
    cover.addEventListener("click", handler);
  }

  function init(selectors) {
    config.containers = document.querySelectorAll(selectors.container);
    const playButtons = document.querySelectorAll(selectors.playButton);
    addClickToButtons(playButtons);
    body.addEventListener("animationend", animationEndHandler);
  }

  return {
    addCoverHandler,
    init
  };
}());
1

Nejlepší odpověď

1

Oba jsou v pořádku, protože počáteční hodnota currentPlayButton nezáleží na tom,. Máš přepisovat to buď způsobem v coverClickHandler funkce a ne dělat něco s původní hodnotou.

2021-11-23 02:26:27

Jen jsem řekl, ty absolutně nemají dělat to samé pod kapotou. Zatímco kód může spustit a zobrazí se v obou JSFiddle verze, ve skutečnosti to není.
Spectric

Chtěli byste být schopni, aby mi pomohl pochopit, což je správně používat a proč?
Spectric

@htmlcssjava321 oba jsou v pořádku. Není nic špatného s pomocí ani jednoho.

Měl bych být pomocí místo toho tohle? ať currentPlayButton; jsfiddle.net/bo5jm2r6 To funguje. Je to lepší volba?

@htmlcssjava321 oba jsou naprosto v pořádku. Ani jeden je lepší volba, protože počáteční hodnota nezáleží. Stačí si jen vybrat jeden náhodně pokud se nemůžete rozhodnout.

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................