자바스크립트로 프로그래밍 짜면서 아마 이 연산자는 쓰실런지 모르겠습니다.
바로 물결표시 (~) 인데요.
자바스크립트에도 이 물결 연산자가 먹힌다는거 알고 계셨습니까?
네. 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개로 해결되다니.
뭐 알고보면 유용하군요.
골때리는 자바스크립트는 여기까지로 하겠습니다.
링크는 물결 연산자를 영문으로 잘 설명해 준 글을 인용합니다. 영어 잘한다면야 링크된게 제 강좌보단 낫죠.
그럼 즐자스코딩~
바로 물결표시 (~) 인데요.
자바스크립트에도 이 물결 연산자가 먹힌다는거 알고 계셨습니까?
네. 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개로 해결되다니.
뭐 알고보면 유용하군요.
골때리는 자바스크립트는 여기까지로 하겠습니다.
링크는 물결 연산자를 영문으로 잘 설명해 준 글을 인용합니다. 영어 잘한다면야 링크된게 제 강좌보단 낫죠.
그럼 즐자스코딩~
Comment 1
-
방가
2011.11.22 12:19


~~ 두개를 안쓰고 하나만 쓰더라고 소수점은 다 버리는거 아닌가요??