• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

createTodo함수 안에 매개변수

23.05.23 23:12 작성 조회수 171

0

createTodo 함수 안에 매개변수인 storageData를 넣어줬는데

keyCodeCheck 함수 안에 createTodo함수를 넣어줄 때는 전달인자를 안 넣어줘도 되는건지 알고 싶습니다.

매개변수가 정의되면 그 함수를 호출할 때 전달인자를 넣어줘야하는게 아닌가요?

const createTodo = function (storageData) {
  let todoContents = todoInput.value;
  if (storageData) {
    todoContents = storageData.contents;
  }

  const newLi = document.createElement("li"); //괄호 안에는 생성할 태그 이름
  const newSpan = document.createElement("span");
  const newBtn = document.createElement("button");

  newBtn.addEventListener("click", () => {
    newLi.classList.toggle("complete"); //새로 생성된 li에 새로운 클래스 속성 추가해줌
    saveItemsFn();
  });

  newLi.addEventListener("dblclick", () => {
    newLi.remove();
  });

  newSpan.textContent = todoContents;
  newLi.appendChild(newBtn);
  newLi.appendChild(newSpan);
  todoList.appendChild(newLi);
  todoInput.value = "";
  saveItemsFn();
};

const KeyCodeCheck = function () {
  if (window.event.keyCode === 13 && todoInput.value != "") {
    createTodo();
  }
};

답변 1

답변을 작성해보세요.

1

안녕하세요! ii00님!

매개변수, 전달인자 등의 어려운 용어를 적절히 사용하시는 것을 보니, 공부 많이 하셨군요!

함수를 호출할 때, 전달인자를 넣어주지 않게 되면 해당 매개변수는 undefined가 되어 함수가 실행됩니다!
따라서, 함수는 그대로 실행 가능하되, 매개변수는 값이 없는 undefined가 되는 것이에요!

이러한 이유에서, 올려주신 코드의 3번째 줄을 보시게 되면, "storageData라는 매개변수를 전달받은 경우에만 실행해!" 라는 구문이 들어가 있는 것을 확인하실 수 있습니다!^^

if (storageData) {
    todoContents = storageData.contents;
}
ii00님의 프로필

ii00

질문자

2023.05.24

그럼 storageData 라는 매개변수를 전달받지 않은 경우에도

createTodo 함수 내 이 부분이 실행이 되기는 하는건가요?

 

  const newLi = document.createElement("li"); //괄호 안에는 생성할 태그 이름
  const newSpan = document.createElement("span");
  const newBtn = document.createElement("button");

  newBtn.addEventListener("click", () => {
    newLi.classList.toggle("complete"); //새로 생성된 li에 새로운 클래스 속성 추가해줌
    saveItemsFn();
  });

  newLi.addEventListener("dblclick", () => {
    newLi.remove();
  });

  newSpan.textContent = todoContents;
  newLi.appendChild(newBtn);
  newLi.appendChild(newSpan);
  todoList.appendChild(newLi);
  todoInput.value = "";
  saveItemsFn();

네! 맞아요^^