규도자 개발 블로그

[JavaScript/자바스크립트] 1과 0, 혹은 '1'과 '0'을 boolean으로 전환하는 쉬운 방법 본문

HTML/CSS/JS/JavaScript

[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문을 추가하지 않더라도 원할하게 자료형을 변환할 수 있다.

 가장 명심해야할 것은, 프론트단에서의 truefalse가 대부분의 백엔드 언어에서 문자열인 "true","false"로 인식된다는 점이다! 이점만 주의하면 api request와 response를 받는 과정에서 boolean값을 다루는 데에 많은 도움이 될 것이다.

Comments