본문 바로가기

Web/JavaScript

[JavaScript] for each문에서 return false 처리

 

for each 문에서 결과값을 리턴 받을 때 

아래와 같은 코드로 실행하게되면 원하는 값을 얻지 못합니다.

 

Check: function() {
    $("input[name='chkgroup']:checked").each(function() {
        
        if (!$(this).is(":checked")) {
          alert("잘못 체크하셨습니다.");
          return false;
        }
      });
    return true;
  }
 
 ...
  
  const result = check();
  //항상 retun true 반환

 

정상적인 값을 반환 받을 수 없는 이유는 function 내에 들어있는 each 문은 또다른 function 이기때문에
each 문에서 return false 는 break 과 같은 역할을 하여  each 함수를 빠져나갈 뿐이기 때문입니다.

 

정상적인 결과를 return 받기 위해선 아래와 같이 처리해야합니다.

 

Check: function() {
	var result = true;
	
    $("input[name='chkgroup']:checked").each(function() {
        
        if (!$(this).is(":checked")) {
          alert("잘못 체크하셨습니다.");
          result = false;
          return false;
        }
      });
    return result;
  }
 
 ...
  
  const result = check();
  //체크가 안된 checkbox가 있을경우 retun false 반환