미직유
128
2022-03-03 10:59:39
3
2240

이거 도저히 이해가 안되는데... 어디를 다시 공부해야 할까요?





if(결과[a] > 0) {

      결과[a] = 결과[a] + 1;

}

else{

      결과[a] = 1;

}

이부분이 이해가 안가네요...

결과라는 오브젝트 변수에 a변수를 키값으로 넣어주는걸 어떻게 비교연산자 >로 비교가 가능한지도...

그리고 이게 카운팅 되는 방식도 모르겠네요...ㅠㅠ



0
  • 답변 3

  • hhj
    1k
    2022-03-03 11:33:12

    if문에 디버그 걸어보시고 한스텝씩 진행하시면서 보세요

  • 깨구리
    1k
    2022-03-03 11:36:02

    1. 글자세기('aab'); 를 실행합니다.

    2. 첫 루프를 돌 때 결과[a] 는 undefined 입니다. 따라서 if(결과[a] > 0) 는 거짓이므로 결과[a] = 1; 이 됩니다.

    여기까지: 결과 = {'a': 1};

    3. 두 번째 루프입니다. 두 번째 글자도 'a' 입니다. 앞에 (2)에서 결과['a']는 1이 되었으므로 if(결과[a] > 0)는 참입니다. 따라서 1을 더해줍니다.

    여기까지: 결과 = {'a': 2};

    4. 세 번째 루프입니다. 세 번째 글자는 'b'입니다. if(결과[a] > 0) 는 if(결과['b'] > 0) 가 되겠죠? 결과['b']는 현재 undefined이므로 결과['b'] = 1 이 할당됩니다.

    여기까지: 결과 = {'a': 2, 'b': 1};



    유의사항: 결과[a]와 결과['a']가 다르다는 점에 유의해서 코드를 읽으세요. 


  • 미직유
    128
    2022-03-03 11:49:26

    @hhj

    네 감사합니다 그렇게 해보겠습니다!


    @깨구리

    와 한시간 넘도록 이해 안됐는데 이제 됐습니다 정말 감사합니다!!ㅠㅠ

  • 로그인을 하시면 답변을 등록할 수 있습니다.