[Project]/[6.2 개인과제] 영화 콜렉션

[Javascript] 기능구현시 ... return vs console.log

Lethargin 2023. 6. 2. 16:52
function a(item) {
  let { poster_path, title, overview, vote_average, id } = item;

  let movieCard = document.createElement("div");
  movieCard.className = "movie-card";
  movieCard.onclick = function () {
    alert(`ID : ${id}`);
  };

  let posterPathElement = document.createElement("img");
  posterPathElement.src = `https://image.tmdb.org/t/p/w400/${poster_path}`;
  posterPathElement.style.marginLeft = "20px";
  posterPathElement.style.marginTop = "20px";

  let titleElement = document.createElement("h3");
  titleElement.textContent = title;
  titleElement.style.marginLeft = "10px";
  titleElement.style.fontSize = "20px";

  let overviewElement = document.createElement("p");
  overviewElement.textContent = overview;
  overviewElement.style.marginLeft = "10px";
  overviewElement.style.marginRight = "10px";
  overviewElement.style.textAlign = "justify";

  let voteAverageElement = document.createElement("p");
  voteAverageElement.textContent = `Rating: ${vote_average}`;
  voteAverageElement.style.marginLeft = "10px";
  voteAverageElement.style.marginRight = "10px";

  let idElement = document.createElement("p");
  idElement.textContent = `id: ${id}`;
  idElement.style.marginLeft = "10px";
  idElement.style.marginRight = "10px";

  movieCard.appendChild(posterPathElement);
  movieCard.appendChild(titleElement);
  movieCard.appendChild(overviewElement);
  movieCard.appendChild(voteAverageElement);
  movieCard.appendChild(idElement);

  return movieCard;  //👈
}

🤔 return movieCard 밑에 console.log(movieCard)를 찍으면 안되고 -> 콘솔을 return 위에 찍어야 함 (return 이하 문장들은 모두 무시하기 때문에)

 

console.log()  vs  return

-전자는 단순히 화면에 출력하는 기능이고,

-후자는 값을 '저장'하는 기능이다.

 

 

좀더 자세히 살펴보면

return

-함수가 return이라는 말을 만나면 값을 내뱉고 끝나게 되므로,

-함수의 맨 마지막에 return이 위치해야 함.

function f (a, b) {

	   return (a + b) ; 
 	   if(조건) { ... }  //if와 else 조건문 안의 명령문은 실행되지 않음. return이 앞에 있으므로
	   else(조건) { ... } 
       
}

 

console.log

오류 종류

undefined : 콘솔에 인자로 아무것도 안 보내졌을 때

sth is not a function : 함수가 아닌데 함수로 호출하면 뜨는 오류 -> 🤔forEach() 썼을 때 이 오류 났었는데...

sth(변수이름) is not defined : 변수가 선언된 적이 없는데 썼을 때

④NaN : not a number(숫자가 아니라, 잘못 계산했어!라는 뜻) - ❶(+)연산자 : 숫자와 boolean을 -> 문자열로 변경 ❷(+) 제외한 (-), (*) 등 연산자 : 숫자로 변경 (공백은 0ㅇ으로 침)의 경우에 나오는 듯

 

 

 

 

참고: https://velog.io/@haileyself/TIL-%ED%95%A8%EC%88%98%EC%97%90%EC%84%9C-Return%EC%9D%98-%EC%9C%84%EC%B9%98-console.log-%EA%B4%80%EB%A0%A8-%EC%B0%B8%EA%B3%A0%EC%82%AC%ED%95%AD-