-
[2019.02.27] for문 사용에 주의해야 할 점(?)개발 블로깅/Javascript 개념 2019. 2. 27. 23:18
무턱 underbar 과제를 진행하는 중에, 한 문제에서 엄청 시간을 쏟았다....
문제내용은, 하나의 배열이 있으면, 거기 안에 있는 Element와 Index 값을 같이 저장하는 문제였던 것 같다. (문제 다시 확인해보기 귀찮..)
그렇다. 그냥 for문 돌려서 하나씩 보내주면 된다.
엄청 쉬운 문제였다.. 정말 간단한거다...당연히 코드에 이상없다. 결과물도 이상없다....
근데 왜 도대체 테스트케이스에서 passed가 되지 않는 것이야..!!! 😡
엄청난 시간을 쏟아 겨우 찾아낸 원인.... 인덱스의 타입이 String이였던 것.
평소 for문을 돌리면 Index는 무조건 정수형일 줄 알았다... 그런데 오늘 처음 알았다!
12345var array = [1, 2, 3, 4, 5];for(var index = 0; index < array.length; index++){console.log(array[index]); // index의 타입은 Number}cs for문을 위처럼 쓰는 방식은 index타입에 아무런 문제가 없다.. 그런데 내가 요즘 for문 쓰는 방식이 바꼈는데.. 바로 밑에 방식에 문제가 있었던 것..!
12345var array = [1, 2, 3, 4, 5];for(var index in array){var element = array[index]; // index의 타입은 String}cs for문을 위처럼 저렇게 쓰면 index 타입이 String이다...ㅜㅜ....
여태까지 몰랐다... 지금껏 저렇게 써도 Element를 잘 가져오길래, 당연히 Index 타입은 Number일 줄 알았다..
저렇게 했을 때 index가 String 타입인데도 Element를 불러올 수 있다는 것은..
12345var array = [1, 2, 3, 4, 5];console.log(array[0]); // 당연히 1을 가져온다.console.log(array['0']); // 이것도 된다는 것이다...cs 배열의 각 인덱스를 String으로 써도 가져온다는 것!
뭔가 편할 수도 있지만 Index타입으로 인해 에러가 발생한다면...찾기가 어려울지도...
반응형'개발 블로깅 > Javascript 개념' 카테고리의 다른 글
[2019.03.01]javascript에서 함수 선언에 따른 차이점. (0) 2019.03.01 [2019.02.28] javascript의 prototype 개념, 그리고 this. (0) 2019.02.28 [2019.02.26] Test Builder 작성 (0) 2019.02.27 [2019.02.22] 크롬으로 디버깅하는 방법 (0) 2019.02.23 [2019.02.21] Javascript 코딩 스타일 규칙 (0) 2019.02.21