node.js 에서 express 3을 이용하여 프로젝트를 진행하던중
차장님이 설정하신 app.js 부분에서 의문발생..
app.use(function(err, req, res, next){
if (~err.message.indexOf('not found')) return next();
res.status(500).send(error.ER_API_SERVER);
});
검색해서 찾아 보니, 이건 비트 연산자라고 한다.
원문글을 긁어와서 적어보겠당.
원문 : http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=74574
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개로 해결되다니.
대박. 몰랐는뎅.. ~~만으로 Math.floor() 실현.. 굳굳
if (~'oh my god'.indexOf('m'))
이라는 건 곧 m이라는 글자가 있으면. 이라는거구만.
'Note > 그밖에' 카테고리의 다른 글
무료 이미지 편집 툴 GIMP (0) | 2013.03.06 |
---|---|
OLPT 와 OLAP (0) | 2013.03.04 |
twitter, facebook API error code (0) | 2012.11.22 |
javascript :: isEmpty(), isNotEmpty() 함수 구현 (0) | 2012.10.18 |
GET 방식 글자수 제한 (0) | 2012.08.09 |