• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 JavaScript, TS 게시판 함수 외부에서 선언된 변수가 함수를 지나도 안바뀜

함수 외부에서 선언된 변수가 함수를 지나도 안바뀜

2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 글쓴이
  • #38561

    케이크
    참가자
    함수 외부에서 선언된 두개의 변수 중 하나는 함수를 거치고 제대로 바뀐뒤 함수밖에서 로그도 잘 찍히는데
    
    한 변수는 함수 내부에서 로그를 찍어봤을땐 잘 나오는데 함수 밖에선 미리 선언된 빈 배열이 나옵니다.
    
    async await와 관련된 문제일거로 예상됩니다만 찾아봐도 답이 잘 나오지 않습니다..
    
    
    router.get('/suggest', authMiddleware, async (req, res) => {
      const { mbti } = res.locals.user; // 로그인한 유저의 mbti
      let user = []; // 전역 변수 선언
      let lookingFor = [];
      async function suggest(...args) {
        for (let i = 0; i < args.length; i++) {
          lookingFor.push({ mbti: args[i] });
        }
        user = await User.find({
          $or: lookingFor,
        });
        console.log('함수내부', lookingFor);
        console.log('함수내부', user);
        return user;
      }
    
    switch (mbti) {
    case 'ESFJ':
          suggest('ISFP', 'ISTP');
          // user = await User.find({
          //   $or: [{ mbti: 'ISFP' }, { mbti: 'ISTP' }],
          // });
          break;
    }
    
    console.log('함수외부', lookingFor);
    console.log('함수외부', user);
    
    콘솔결과: 함수외부 [ { mbti: 'ISFP' }, { mbti: 'ISTP' } ]
                 함수외부 []
                 함수내부 [ { mbti: 'ISFP' }, { mbti: 'ISTP' } ]
                 함수내부 [유저정보 잘 담겨있음.]
    #38578

    codingapple
    키 마스터
    코드실행순서문제입니다  
     user = await User.find 어쩌구는 늦게 실행완료 되는데 그 전에 console.log(user)실행해서 그럴 뿐인듯요 
    
2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠