bject

이번주는 이사준비로 인해 매일 무언가를 치우거나 정리하고 청소하는 중이라서 공부에 집중하기 어렵다. 어제도 이사들어갈 집에 청소를 하러갔다가...현재 온 몸이 쑤셔서 골골 거리는 중이다.😢

Javascript Koans의 object부분을 푸는 중인데, 내 답안과 다른 부분이 있어 남겨두려고 벨로그를 작성한다!

 var megalomaniac = {
   mastermind : "Brain",
   henchman: "Pinky",
   
   battleCry: function (noOfBrains) {
   return "They are " + this.henchman + " and the" +
          Array(noOfBrains + 1).join(" " + this.mastermind);
   }
 };

 var battleCry = megalomaniac.battleCry(4);
    expect("They are Pinky and the 5Brain").toMatch(battleCry);	//나의 답안
    expect("They are Pinky and the Brain Brain Brain Brain").toMatch(battleCry); //정답

Array ( param )

Array 는 new 생성자 없이도 사용할 수 있다.
battleCry(4) 일 때 Array(5) 로 빈배열 5개가 생성된다.

x라는 배열을 만들고 join()을 사용해봤다. " " 구분자와 "hi"가 5개씩 담겨나온것을 확인할 수 있었다.

이렇게 Array( n-1 ) 되어져서 반환되는 이유를 모르겠어서 구글링해보았다.

stack overflow 의 답변을 보면

  • Array는 new 없이도 사용할 수 있고,
  • . join() 함수는 각 배열 요소를 문자열로 변환한 다음 배열 요소에서 각 문자열 사이에 인수가 있는 연결된 문자열을 .join()으로 반환한다.
  • Array는 5개의 빈 undefined 요소로 배열을 구성하고 이걸 표현식과 결합한다고 한다. 그리고 5개의 빈 문자열사이에는 4개의 구분자가 있다.

종합해보자면 Array(noOfBrains + 1).join(" " + this.mastermind);
Array(5)는 5개의 빈배열이 구성되어져 있고 " Brain" 이 구분자로 사용되어지기 때문에 " Brain"이 4번 출력되는 것이다.

같은 내용으로 tstory에도 잘 정리해둔 글이 있었는데 ㅋㅋ 한글로 읽으니.. 이해가 더 빨리되는 기분이었달까.. 이해하기 위해 참고했던 두 글을 하단에 첨부해둔다! 미래의 나를 위하여...

좋은 웹페이지 즐겨찾기