골때리는 자바스크립트 미니버전.

자바스크립트로 프로그래밍 짜면서 아마 이 연산자는 쓰실런지 모르겠습니다.

바로 물결표시 (~) 인데요.

자바스크립트에도 이 물결 연산자가 먹힌다는거 알고 계셨습니까?

네. C 언어와 마찬가지로 비트로 부정하는 연산자입니다.

예를 들면, 브라우저는 대부분 32비트니 32비트 정수죠.

9  = 00000000000000000000000000001001

              ——————————–

~9 = 11111111111111111111111111110110 = -10

대충 이런 식이 성립되는군요. -(n+1)

물론 잘 안쓰죠. 자바스크립트에 비트 연산 거의 쓸일이 없거든요.

가뜩이나 node.js 빼면 파일이나 이진법 연산도 안되는 이 연산자.

하지만 쓸 곳이 하나 있다는 사실 아십니까?

바로 indexOf 메서드입니다. String 에. 문자열에 내장된 함수죠.

왜냐구요? 직접 연산해 보시길.

~-1 = 0

~0  = -1

~2  = -3

자. 이제 감 잡으셨죠? indexOf 는 지정된 문자열을 찾지 못하면 -1 이 반환됩니다.

결국 이렇게 편리한 논리식이 성립됩니다.

if(~’oh my god’.indexOf(‘m’)){

    alert(‘m이 요기잉네?’);

}else{

    alert(‘m 따위 내가 먹었음.’);

}

어때요. 참 쉽죠?

그것도 모자라 물결표시 2개짜리도 있습니다. ~~ 입니다. 그럼 이건 뭘까요?

쉽게 생각하세요. !!a 처럼 반전에 반전을 한겁니다. 그렇게 생각하면 쉬워요.

하지만 문제가 뭐냐면..

~~3.4356456 == 3

정수가 되버린다는 사실. 그것도 소수점 다 버립니다. Math.floor() 처럼요.

그러고 보니까 Math.floor 의 대안이 될 수 있겠군요.

근데 왜 소수점을 다버릴까요? 흐음.. 글쎄요. 그것까지는 모르겠습니다.

하지만 정말 유용할 것 같군요. 소수점을 버리고 정수만 표현하고 싶은데

여태까지 Math.floor 써왔는데 겨우 물결표시 2개로 해결되다니.

뭐 알고보면 유용하군요.

골때리는 자바스크립트는 여기까지로 하겠습니다.

그럼 즐자스코딩~

composite / 2012년 11월 13일 / 미분류
태그:, , , ,

Comments

  1. 지송 - 2012년 11월 14일 @ 1:51 오전

    재미있네요 ^^ 잘보고 갑니다.

    Reply

지송 에 답글 남기기 응답 취소

Your email address will not be published / Required fields are marked *