[JavaScript] Logical Operator - or(||), and(&&), equality(===), not(!)

operator

Posted by dongjune on January 6, 2021

|| (or)

or 연산을 할 때 만약 앞에서 true가 나온다면 뒤까지 확인하지 않고 바로 true를 return하게 됩니다.

따라서 무거운 연산을 하는 것일수록 가장 뒤에 보내는게 효율적인 코드입니다.

다음의 코드를 보면 value1이 true이기 때문에 바로 true를 return하고 뒤에 있는 check 함수는 실행이 안되는 것을 확인할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
const value1 = true;
const value2 = 4 < 2;

// || (or), finds the first truthy value
console.log(`or: ${value1 || value2 || check()}`); // 출력 : true

function check() {
  for (let i = 0; i < 10; i++) {
    //wasting time
    console.log('😱');
  }
  return true;
}

&& (and)

and 연산자는 &&으로 표현합니다. &&역시 앞에서 false가 나오면 바로 false를 return 해주기 때문에 위에서 설명한 것처럼 무거운 연산을 하는 것을 뒤로 보내는 것이 효율적인 코드입니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
const value1 = true;
const value2 = 4 < 2;

// && (and), finds the first falsy value
console.log(`and: ${value1 && value2 && check()}`); // 출력 : false

function check() {
  for (let i = 0; i < 10; i++) {
    //wasting time
    console.log('😱');
  }
  return true;
}

! (not)

boolean 값을 뒤집어줍니다.

1
2
3
const value1 = true;

console.log(!value1); // 출력 : false

Loose Equality( == ), Strict Equality( === )

Loose Equality (==) 는 비교하는 두 데이터의 데이터타입을 같도록 변경한 후 값을 비교합니다. 따라서 아래와 같이 string 5와 number 5를 == 으로 비교하면 true를 return 합니다.

1
2
3
4
5
const stringFive = '5';
const numberFive = 5;

// == loose equality, with type conversion
console.log(stringFive == numberFive); // 출력 : true

반면에 Strict Equality ( === ) 는 데이터 타입을 서로 같게 바꿔주지 않기 때문에 다음과 같은 결과가 나옵니다.

1
2
3
4
5
const stringFive = '5';
const numberFive = 5;

// === strict equality, no type conversion
console.log(stringFive === numberFive); // 출력 : false