[JavaScript] 대입, 비교, 부정, 조건 연산자(삼항연산자)

# 부정연산자( NOT (!) ): true값은 false로 false값은 true로 반환해준다.

!true ==> false
!false ==> true
!0 ==> true

NOT을 두개 연달아 사용(!!)하면 값을 불린형으로 변환할 수 있다.

!!"this is string" ==> true
!!null ==> false
!!1 ==> true


참고로 내장 함수 Boolean을 사용하면 !!을 사용한 것과 같은 결과를 도출할 수 있다.



# 대입연산자: =



대입연산자(=)는 변수에 값을 지정해주는 연산자이다.

ex) a=1  b=1  a+b=2

이런식으로 각 변수에 값을 지정해주고 결과를 얻을수있게해준다.


# 비교연산자 (동등연산자 == 와 일치연산자 ===)


위의 사진은 숫자 1과 문자열 1을 비교하는것이다.

위 사진에서 일치연산자 ===를 사용할 경우 데이터 타입과 값을 비교해주어 숫자 1과 문자열 1은 데이터 타입이 동일하지 않기에 false 값을 반환한다.

반면에 동등연산자 ==를 사용할 경우 데이터 타입은 비교하지않고 겉보기만 같으면 숫자 1과 문자열 1은 같기에 true값을 반환한다.


===는 '엄격하게 같다'라는 의미이다. '엄격하게'의 의미는 변수 타입까지 고려한다는 것이다.


완벽한 코드를 작성하기위해서는 ==가아닌 ===를 사용해야지 버그없는 코드를 작성할 수 있다.



추가적으로 비교연산자는 String(문자열), Number(숫자), Boolean값 끼리는 비교가 가능하지만 배열과 같은 객체끼리의 비교는 불가능하다. 

배열은 객체인데 객체끼리 비교시 같은 값을 가지고 있더라고 false를 반환하기 때문이다. 

배열 뿐만아니라 모든 객체는 같은 값을 가지고있는 객체라도 비교시에 false값을 반환한다. 

객체는 형태와 데이터 타입을 비교하지않고 값이 저장된 메모리 주소를 비교하기 때문이다. 

하지만 이러한 객체도 비교할 수 있는 방법이 있는데 객체를 문자열로 변환하고 그렇게 변환된 문자열끼리 비교를 하면 비교가 가능해진다.

배열을 문자열로 바꾸려면 join메서드를 사용하여 문자열로 변환 후 값을 비교해도 되고 객체들의 경우 JSON.Stringify()를 사용하면 문자열로 변환하여 비교할 수 있다.


* Object.is()

Object.is() 는 === 처럼 값을 비교할 때 사용되는 내장 메서드이다.

일반적인 비교에서 ===과 같은 역할을 하지만 아래의 두가지 케이스에서 정확히 비교해야하는 경우 사용된다. 

1. NaN을 대상으로 비교할 때

NaN은 자기자신을 포함한 어떠한 값과도 같지 않는다.
console.log(NaN === NaN); //false

하지만 Object.is()를 사용하면 true를 반환한다.
console.log(Object.is(NaN, NaN)); // true


2. 0과 -0 이 다르게 취급되어야 할 때

console.log(0 === -0); // true

console.log(Object.is(0, -0)); //false


1번과 2번을 제외한 다른 경우에서는 Object.is()는 ===과 동일한 역할을 한다.



# 조건연산자 ?(물음표)

조건연산자(삼항연산자)는 if문과 달리 한줄에 if조건문과 같은 효과를 가지는 조건문을 작성할 수 있다. 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

공식 --> 조건 ? 참 : 거짓

예시)
var a = 1
var b = 2
var c = 1


// ex 1)
a === b ? 'true' : 'false'

결과값 : false

// ex 2)
a === c ? "true" : "false";


결과값 : true


ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

IF 문으로 표현한 조건문이다.

if (a > b) {
c = 10;
} else {
c = 20;
}

위의 식을 조건 연산자로 고쳐 쓰면 다음과 같다. 아주 간단하게 표현이 가능하다.

(a > b) ? c = 10 : c = 20;

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ


사칙연산시에 부호는 왼쪽에 작성되어있는 값을 기준으로 부호가 정해진다.
ex) -4/2 = -2

댓글