211129 TIL [JS] 논리 연산자

김풀연·2021년 11월 29일
0

TIL

목록 보기
23/32

논리 연산자

  • 논리 연산자는 우항과 좌항의 피연산자(부정 논리 연산자의 경우 우항의 피연산자)를 논리연산 한다.
  • || : 논리합(OR)은 둘 중 하나만 true여도 true를 반환한다. -> 좌항의 피연산자가 true이면 단축평가 (//true)
    마지막 Falsy 값 혹은 처음 만난 Truthy 값을 반환한다.
  • && : 논리곱(AND)은 둘 모두 true일 때만 true를 반환한다. -> 좌항의 피연산자가 false이면 단축평가 (//false)
    마지막 Truthy 값 혹은 처음 만난 Falsy 값을 반환한다.
  • ! : 부정(NOT)

드모르간 법칙

!(x || y) === (!x && !y)
!(x && y) === (!x || !y)

문제

//1번문제 
false || true //true 

//2번문제
true && false // false 

//3번문제
!true // flase

//4번문제
!((true && false) || (true && false)) // true

//5번문제
let x = 10
!((x % 5 == 0 && x % 2 == 0) || (x / 2 == 5 && false)) // false

//6번 문제
let y = 10
(false && y % 2 == 0) && (y / 2 == 5 && false) // false

//7번문제
let z = 3
(true && z % 3 == 0) || (z / 2 !=!= 5 && false) 
// !=!=는 잘못된 문법. 과연 뒤에것을 볼 필요가 없을 때, Code는 뒤에 것을 확인하는가를 보기위해서 넣음 -> 단축 평가와는 별개로 에러는 잡음
// error

//8번문제
let job = true;
job && '완료' || '미완료'; // '완료'

//9번문제
let job = false;
job && '완료' || '미완료'; //'미완료'

타입 변환

1. boolean 타입으로의 변환

  • 숫자, 문자열, 객체 등은 불리언 타입으로 변환 가능하다
  1. Boolean()
    Boolean() 생성자 함수를 new 연산자 없이 호출하여 불리언 타입으로 변환하는 방법
Boolean('') // false

Boolean(' '); //true

Boolean(0); //false

Boolean(3); //true

Boolean(-1); //true

Boolean({}); //true

Boolean([]); //true

Boolean(Symbol()); //true
  1. !!
    부정 논리 연산자(!)를 연달아 두 번 사용하여 불리언 타입으로 변환하는 방법 , 이중부정을 통해서 원래의 boolean 타입을 반환하는 방법
!!true
true

!!'Kim'
true

!!''
false

!!' '
true

!!1
true

!!0
false

!!null
false

!!undefined
false

!!NaN
false

2. string의 number로의 타입 변환

  1. parseInt()
    문자열 인자를 정수로 반환하는 함수
parseInt('123'); //123
parseInt('123sdf'); //123
  1. Number()
  • 숫자 값으로 변환해주는 래퍼(wrapper)객체.
  • 생성자로 사용하지 않으면(new 연산자를 사용하지 않으면) 형변환을 할 수 있다.
  • 합목적성을 따졌을 때, 숫자로 형변환 할 때는 Number()보다 parseInt()를 사용하는 게 맞음
  1. +x
  • 문자를 숫자로 바꾸는 실무 형변환
let x = '10000';
//문자를 숫자로 바꾸어 반환
+x;  //10000
//본래 변수 x에 저장된 값은 변하지 않음
x; //'10000'

//재할당
x = +x;
x; //10000
  • parseInt()는 숫자로 변환할 수 있는 것까지만 변환하여 숫자를 반환하지만, + 방법은 변환할 수 없는 문자가 있을 경우 NaN을 반환
let x = '123abc';
passeInt(x); // 123
+x; // NaN
profile
<strong>가보자고🚀</strong>

0개의 댓글