deblog

[JavaScript] flag변수란? 본문

IT/JavaScript

[JavaScript] flag변수란?

스콘_ 2021. 7. 26. 21:43
반응형

flag변수란 무엇일까?

플래그(flag)란 깃발이라는 뜻인데, 컴퓨터에서 무언가를 기억하거나 또는 다른 프로그램에게 약속된 신호를 남기기 위한 용도로 프로그램에 사용되는 미리 정의된 비트이다.

 

예를 들어, 두 프로그램 사이에서 교환되고 있는 하나의 메시지 내에, 세 비트로 구성된 플래그 필드가 있다고 할 때, 이 플래그의 비트 구성은 다음과 같이 설정될 수 있다.

  • 001 ("나는 별도의 메시지임"라는 의미로)
  • 011 ("나는 이 메시지 내에 있는 여러 개의 데이터 중 하나임"라는 의미로)
  • 111 ("나는 이 메시지의 마지막 데이터임"라는 의미로)

플래그들은 컴퓨터 프로그래밍에서 매우 자주 사용된다.

 

처음에는 굉장히 낯설었는데, 알고보니 boolean값 true, false값을 가진 변수였습니다.

flag변수를 사용하는 로직

위 그림처럼 처음에 flag변수는 true나 false값을 가질수 있다. 위 같이 다소 복잡해 보이는 제어구조를 flag변수를 이용해 처리할수 있습니다.

 

더러운 코드를 flag코드를 이용해 바꾸어 봅시다.

 

원래 코드

 if (RowData.length === 0) {
 	 alert("저장할 데이터가 없습니다."); 
     }else{
     RowData.forEach(function (value) {
       if (value.StartDtm === null || value.EndDtm === null) {
          alert("날짜를 입력하세요."); 
         } else {
          if (value.StartDtm > value.EndDtm) {
              alert("마감일은 시작일 이후로 입력하세요."); 
         } else {
         // values 전송
    	 }
     }
 }

 

 if를 이용해 계속해서 안으로 파고 드니 가독성도 좋지않고, alert가 겹쳐 404에러가 발생했다.

그야말로 어거지로 코딩하기. 이것도 힘들게 한게 유머

 

수정된 코드

 let checkDtm = true; // flag변수
 let noneDtm = true; // flag변수
 
 if (RowData.length === 0) {
 	 alert("저장할 데이터가 없습니다."); 
     }else{
     RowData.forEach(function (value) {
        if(value.startDtm > value.endDtm) {
        	checkDtm = false; // false로 변경
            return; //  다시 처음으로 돌아감.
        }
        if(!value.startDtm || !value.endDtm){
        	noneDtm = false;
            return;
        }
     }
     if(!checkDtm) {
     	alert("마감일은 시작일 이후로 입력하세요.");
     }
     if(!noneDtm) {
     	alert("날짜를 입력하세요.");
     }
 }

쨘 ! 가독성있게 변했다. 

flag변수를 이용해서 value validation(유효성 검사)를 해보았습니다.

 

 

 

다음에 할때는 꼭 생각 나겠지.

'IT > JavaScript' 카테고리의 다른 글

[JS] Array.from()이란? 쪼개서 배열로 만들고 싶을 때 ! 👌  (0) 2021.10.28
[JS] map() 메서드  (1) 2021.09.16
Comments