규도자 개발 블로그
[JavaScript/자바스크립트] 1과 0, 혹은 '1'과 '0'을 boolean으로 전환하는 쉬운 방법 본문
[JavaScript/자바스크립트] 1과 0, 혹은 '1'과 '0'을 boolean으로 전환하는 쉬운 방법
규도자 (gyudoza) 2019. 9. 3. 22:43[JavaScript/자바스크립트] 1과 0, 혹은 '1'과 '0'을 boolean으로 전환하는 쉬운 방법
지금 여기에 쓰는 예제는 바로 개발자모드의 console창에서 입력해보며 실험해볼 수 있다.
물론 정수형인 0과 1은 별다른 작업 없이 true와 false의 역할을 수행할 수 있다.
if(1) console.log("if passed");//if passed
if(0) console.log("if passed");//undefined
이런식으로 말이다. 위 코드를 개발자모드 console창에 써보면 오른쪽의 주석과 같은 결과가 출력되는 것을 확인할 수 있다. 하지만 같은 역할을 수행할 수 있다 하더라도 굳이 0과 1이 아닌, boolean으로 표현해야할 때가 있다. 그럴 때 쓰기 좋은 방법이다.
console.log(!!1);//true
console.log(!!0);//false
바로 이렇게 두번의 NOT연산자를 사용하는 것이다. 그러면 1과 0이 제대로 된 boolean 자료형으로 들어간다. 물론 이건 자료형이 Int일 때만 유효하므로 만약에 1과 0이 문자열로 들어오는 형태의 구조에서 사용하고 싶다면
console.log(!!parseInt('1'));//true
console.log(!!parseInt('0'));//false
이런식으로 수행하면 된다.
구체적인 사용 예를 들자면 나 같은 경우에는 api request및 response를 다루는 과정에서 사용자 개인정보를 주고 받을 때 사용자의 성별정보가 여자면 0, 그리고 남자면 1이 반환되는 상태에서 사용하였다. 0을 보내도 1을 보내도 백엔드(java)에서는 true로 인식하길래 살펴보니 서버에서는 해당 값을 문자열로 인식하였고, 자바에서는 "0"을 true로 인식하였기 때문에 계속 true로 처리가 됐던 것이었다. 이걸 해결하기 위해 자바 내에서 해당 패러미터를 받을 때 Boolean.parseBoolean(String value)
을 사용하였는데 매개변수 자료형에서 볼 수 있다시피 이 함수는 true
라는 문자열을 참으로 형변환해주고, false
라는 문자열을 거짓으로 형변환해주는 함수였기 때문에 "1"과 "0"을 전달하는 과정에서 해당 값을 참과 거짓으로 바꿔주지 않으면 계속해서 오류가 날 상황이었다.
하지만 해당 함수는 또 프론트단에서는 Promise를 통해 첫 api request의 response를 그대로 담아 두번째 api request를 보내는 형태였기 때문에 "1"이나 "0"인 문자열을 읽어서 true나 false로 담아주기에... 솔직히 귀찮았다. 그냥 그대로 자료를 넘겨주면 되는 걸 굳이 재가공하고 싶지 않았고, 코드 또한 깔끔하게 유지시키고 싶었기 때문에 request를 보내는 동시에 한 줄에 해결하는 방법을 찾아서 기쁜 마음에 기록해둔다. 이 방법을 이용하면 따로 삼항연산자나 if문을 추가하지 않더라도 원할하게 자료형을 변환할 수 있다.
가장 명심해야할 것은, 프론트단에서의 true
와 false
가 대부분의 백엔드 언어에서 문자열인 "true"
,"false"
로 인식된다는 점이다! 이점만 주의하면 api request와 response를 받는 과정에서 boolean값을 다루는 데에 많은 도움이 될 것이다.
'HTML/CSS/JS > JavaScript' 카테고리의 다른 글
[Javascript/자바스크립트] 프론트단에서 클라이언트에 정보 저장하기 (localStorage와 sessionStorage) (0) | 2019.11.15 |
---|---|
[JavaScript/자바스크립트] InternetExplore에서 Promise쓰기 (0) | 2019.10.03 |
크롬 자바스크립트 버그 발견 후 리포트 완료 (0) | 2019.07.08 |
HTML input text value의 함정 (input value와 태그의 우선순위) (0) | 2019.06.06 |
규칙없는(Not Iterable) 자바스크립트 객체 순회하기 (0) | 2019.04.10 |