SPACE RUMI

Hi, I am rumi. Let's Splattack!

[STUDY] 스터디/Deep Dive JS

Javascript 연산자 / ? 옵셔널체이닝 ?? 널리쉬 delete 프로퍼티 삭제

백루미 2022. 11. 18. 14:42
반응형

단항산술연산자 증가/감소(++/--)

피연산자의 값을 변경하는 부수효과가 있다.

x++; // x = x + 1; 와 같다
1 + true // 2

숫자와 다른값을 산술할때는 암묵적 타입 변환 또는 타입 강제 변환 이 일어날 수 있다.

 

할당 연산자

x+=5 //x = x+5
x *= 5 //x = x*5
let str = 'i am...'
str += 'rumi' //str = str + 'rumi'

//i am...rumi

 

동등/일치 비교 연산자

== 동등 비교 (값이 같음)
=== 일치 비교 (값과 타입이 같음)
!= 부동등비교 (값이 다름)
!== 불일치 비교 (값과 타입이 다름)

5 == '5' // true
NaN === NaN // false
  • 가급적 === 를 쓰자!!
0 == -0 //true 이런..
0 === -0 //true..

JS에는 양의 0 음의 0이 있는데 이들을 비교하면 true를 반환한다.

 

삼항 조건식

조건 ? true면 이거 리턴 : false면 이거 리턴

삼항조건식은 값처럼 사용할수있지만, if else문은 값처럼 사용할 수 없다. if else는 조건문이다. 삼항조건식은 값으로 평가할수있는 표현식이다. 조건에 따라 어떤 값을 결정할때는 삼항조건식을 쓰는게 낫다. 하지만 조건이 여러개라면 if else문은 피한다.(삼항조건식 이어붙이면 가독성이 안좋으니까!)

|| 논리합 : 하나라도 true면 true
&& 논리곱 : 둘다 true여야 true
! 논리부정 : !true 는 false (논리부정은 언제나 true false만을 반환한다)

 

typeof 연산자의 괴랄한점

typeof NaN // number
typeof null // object
typeof [] // object
typeof new Date() // object
typeof tjsdjsgkswjrdjqtdma // undefiend 식별자를 선언한적이없는데 Ref에러가 아니고 언디파인드..

 

거듭제곱 

이항연산자 중에서 우선순위가 가장 높음

2 ** 2 // 4
Math.pow(2,2) // 4
(-2) ** 2 // 4

 

그 외 연산자

?. 옵셔널 체이닝

data?.contents?.title //data가 있는지? 있으면 contents가 있는지? 있으면 title 반환

?? null 병합 연산자

let score = 0;

score || 100; // 0을 false값으로 인식해서 100출력
score ?? 100; // score가 0이므로 0출력

0이 할당될 가능성이 있으면 || 쓰지말고 ??를 써라!

delete 프로퍼티 삭제
프로퍼티를..삭제한다..

const friends = {
  bestFriend: 'som',
  boyFriend: 'ray',
  fakeFriend: 'kim',
};

delete friends.fakeFriend;
console.log(friends.fakeFriend); // undefiend

 

반응형