IT/JavaScript
[JavaScript] flag변수란?
스콘_
2021. 7. 26. 21:43
반응형
flag변수란 무엇일까?
플래그(flag)란 깃발이라는 뜻인데, 컴퓨터에서 무언가를 기억하거나 또는 다른 프로그램에게 약속된 신호를 남기기 위한 용도로 프로그램에 사용되는 미리 정의된 비트이다.
예를 들어, 두 프로그램 사이에서 교환되고 있는 하나의 메시지 내에, 세 비트로 구성된 플래그 필드가 있다고 할 때, 이 플래그의 비트 구성은 다음과 같이 설정될 수 있다.
- 001 ("나는 별도의 메시지임"라는 의미로)
- 011 ("나는 이 메시지 내에 있는 여러 개의 데이터 중 하나임"라는 의미로)
- 111 ("나는 이 메시지의 마지막 데이터임"라는 의미로)
플래그들은 컴퓨터 프로그래밍에서 매우 자주 사용된다.
처음에는 굉장히 낯설었는데, 알고보니 boolean값 true, false값을 가진 변수였습니다.
위 그림처럼 처음에 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(유효성 검사)를 해보았습니다.
다음에 할때는 꼭 생각 나겠지.