-~ 기호 - javascript

이태혁·2020년 10월 27일
0
  • ~는 인자를 +1 시켜서 마이너스를 붙여준다.
> ~3
-4
> ~100
-101
  • 그 앞에 -를 붙인 -~ 연산은 +1과 같은 연산을 한다.
    • -~aa + 1 은 같은 연산이다.
  • 하지만 차이점은 a가 숫자가 아닐때 생긴다
    a가 false값인 경우 a+1은 연산이 안되지만 ~a는 -1을 리턴해준다.
> ~undefined
-1
> ~false
-1
> ~0
-1
> ~null
-1

이 특성을 살려 아래와 같이 오브젝트에 할당할 때 undefined 경우를 굳이 분기처리하지 않아도 되게 만들어 준다.
stringOccurance1과 stringOccurance2는 같은 결과를 만드는 함수이다.

let a = "hello";

function stringOccurance1(s) {
  let hash = {}
  for (c in a) {
    hash[c] = -~hash[c]
  }
  console.log('function1', hash);
}
stringOccurance2(a);


function stringOccurance2(s) {
  let hash = {}
  for (c in a) {
    if (hash[c] == undefined) {
      hash[c] = 1
    } else {
      hash[c]++
    }
  }
  console.log('function2',hash);
}
stringOccurance2(a)
profile
back-end, cloud, docker, web의 관심이 있는 예비개발자입니다.

0개의 댓글