-
JavaScript 입문 : 각종 값들의 비교, 자료형의 크기, 논리 연산자, 반대 연산자컴퓨터 알아가기/JavaScript 2021. 11. 3. 19:30728x90반응형
본 글은 제로초 TV, 모던 자바스크립트, JavaScript MDN을 기본으로 하고 있습니다.
1. 자료형의 크기
지난 시간 각종 값들을 비교해 보았습니다. 구체적으로 들어갈 수록 외워서는 불가능한 결과값들을 볼 수 있었는데요. 그런 경우라도 다 이유와 규칙이 있다고 합니다. 도움이 되는 강좌에서 규칙이 설명되지 않는 부분은 곰곰히 연구를 하면서 내것으로 만들어야 겠습니다.
예를 들어 '문자열 숫자'와 '숫자열'을 비교하게 되면 '문자열 숫자'는 '숫자열화'되어 '숫자열'과 비교가 가능하여 참과 거짓을 확인할 수 있습니다.
그러나 '문자열'과 '숫자열'을 비교하는 것은 서로의 성질이 다르기 때문에 비교할 수 없는 결과로 어떠한 경우라도 false가 나오는 규칙을 추정할 수 있습니다. 심지어는 문자열의 크기를 추정하는 .charCodeAt( )을 사용하여 크기를 추정해도 '문자열'과 '숫자열' 비교는 최초 어프로치가 안된다는 이야기입니다.
한가지 더 추정할 수 있는 것은 true와 false의 크기입니다. 지난 시간 true 가 false보다 큰 것을 확인할 수 있었습니다. 이해하기 쉽게 참이 거짓을 이긴다라는 표현을 사용하였는데 조금 더 크기를 추정해 보도록 하겠습니다.
혹자는 true가 1, flase가 0의 크기를 가지고 있다고 하였기 때문에 이 기준으로 확인을 해 볼 필요가 있습니다.
☞ '==' 과 '==='
참고로 같은비교를 할 때 == 처럼 등호를 두번 사용 했습니다. 이는 결과적으로 자료형 보다는 해당 결과값을 비교하는 명령어입니다. 자바스크립트에서는 결과값과 자료형까지 모두 비교할 필요가 있을 때 === 을 3번 사용한다고 합니다.
2. 논리연산자
논리연산자는 쉽게 말해서 AND와 OR 연산자입니다. 예를 들어 '1이 2보다 작고 3이 4보다 작다'라는 문장의 불린 값은 참입니다. 여기서는 AND로 연결되어 있기때문에 앞 뒤 문장이 전부 참이어서 참인겁니다. (중학교 수학 과정)
명령어는 &&를 두번 써 줍니다. 그렇다면 OR을 나타내는 명령어는 || 입니다. OR을 나타내는 표시는 'shift 키 + \'를 누르면 됩니다.
'1이 2보다 작고 3이 4보다 작다'라는 명제와
'1이 2보다 작거나 또는 3이 4보다 크다'라는 명제를 비교해 보겠습니다. 전부 true가 나와야 되겠죠.
그런데 재미있는 규칙을 발견했습니다. 논리연산중 문장이 참이고 다른 문장이 숫자열이면 숫자열 값을 그대로 출력합니다.
3. 반대연산자
값을 반대로 출력하게 만드는 명령어는 ! 입니다. !true를 입력하면 결과값은 false로 나옵니다. 어떤 연산에서도 맨 앞에 !를 붙히면 결과값이 반대로 됩니다.
반대연산자인 !를 2번 사용하면 반대의 반대입니다. 즉, !true가 false로 나왔지만 !!true를 하면 반대의 반대이기 때문에 다시 true가 됩니다. (이런것을 왜 만들었는지...)
그래서 !! 가 2개 들어가서 false가 되는 3가지만 기억하면 나머지는 전부 true입니다. (물론 3가지가 더 있는데 지금 아무 의미없이 외우다가는 그나마 이 3가지도 잊어 버리게 됩니다.) 다시말해 ' ', 0, NaN은 false라고 생각해도 될 것 같습니다.
정말 그런지 아무거나 한번 해 볼게요.
예를 들어 !!0 은 false라고 했습니다. 그러면 !5는 무엇일지 생각해 보죠. 당연히 false입니다. 이유는 2가지로 생각할 수 있는데 5는 true니 !5는 false로 추정할 수 있고 !!0만 false라고 했으니 !!5는 true겠죠. 그러니 !5는 false 입니다.
Q) !5 < 0의 Boolean 값을 구하시오
A) false < false 개념이고 0 < 0 개념이므로 답은 false 입니다.
참고로 !5 == 0 은 당연히 true가 나올겁니다.
Q) 다음 연산자의 결과가 true로 만드시오. (연산자만 추가하거나 수정할 수 있다.)
5 * 4 * 3 === 27;
A) 7가지 정도 답을 구할 수 있었습니다.
모든 강좌에서 말하기를 지속적인 사고력을 필요하다고 합니다. 특히 프로그래밍에서는 과정에 대한 정답이 없습니다. 상기 문제의 답처럼 하나의 결과를 위하여 가능한 여러가지 사고를 통해 답을 유추하는 실력을 키우는게 가장 중요합니다. 만일 이 글을 보거나 혹은 다른 강좌를 듣거나 하더라도 답을 유추하는 고민없이 해답지를 보고 이해를 한다면 그 능력은 하루도 못 가서 사라질 겁니다. 시간이 걸리더라도 자기 것으로 만들지 않으면 의미가 없다고 보면 됩니다.
반응형'컴퓨터 알아가기 > JavaScript' 카테고리의 다른 글
JavaScript 입문 : 변수 선언, 변수 이름 짓기, 변수 내용 수정 (0) 2021.11.08 JavaScript 입문 : undefined, null, 비교 연산표 (0) 2021.11.05 JavaScript 입문 : Boolean값, 각종 값들의 비교 (문자열의 비교) (0) 2021.11.01 JavaScript 입문 : 연산자 우선순위, 소수점 계산 (0) 2021.10.29 JavaScript 입문 : prompt(), 제곱근 연산, Infinity (0) 2021.10.27