javascript 팁이 있는 곳입니다.
  • 웹미니 한줄 전광판 영역 입니다.
글 수 109

0

조회 수 : 6972 신고 : 0

작성자 : 이병준
포인트 : 0 | 레벨 : 0
미리보기 :  
뭐. 8탄이라. 점점 골때려져 가겠는데 이게 웬 8탄이냐..
이번엔 어려워서 골때릴 것 같다구요?
뭐.. 아무렴 어때요.ㅋㅋ

제가 6탄에서 스크립트 난독화에 대해 설명을 한 적이 있었습니다.
그기서 난독화 테크닉에 괄호한테 십쇼키라고 욕했죠.
ㅋㅋ 근데 가끔씩 유용합니다. 왜그럴까요?
그전에 있어서 괄호가 어디어디 쓰이는지부터 보도록 하죠.

var s=0;
for(i=1;i<=100;i++){
  s+=i;
}
alert(s);

뭐. 일단 쉽게 1부터 100까지 더하는 반복문입니다.
그렇다면 이걸 일반적인 다른 방법이 있다면,

var s=0,i=1;
while(i<=100)
  s+=i++;
alert(s);

그럼 함수는..

function(a,b){
  return a+b;
}

그리고 또는 1탄에서 언급한 기술..

(function(a){alert(a);})('안녕');

아니면

alert(({a:'b',c:'d'}).a);

괄호는 우리 코딩이나 프로그래밍 생활에 정말 유용하게 쓰이는 녀석입니다.

자 그렇다면, 6탄에서 본적 있죠?

var a=(b='이런',b+'젠장');
alert(a);

이 스크립트를 실행하면 이런젠장이란 글씨가 뜹니다.
a는 함수인가요? 아닌뎁쇼.
그럼 뭡니까? 몰라요. 그렇다는데요?
저보다 자스천재님이 가르쳐주실지도...ㅋ

어쨌든, 난독화에 쓰이기도 하고, 일회성도 있기 때문에 잠시 써먹는 식으로도 그만이죠.
예를 들어,

while(Math.round(Math.random())){
  a=1;
  window.status+=a;
}

이 a는 어자피 while 문 안에서만 쓸 거 아닙니까? 그럼 그냥 이렇게 하세요.

while(a=1,Math.round(Math.random())){
  window.status+=a;
}

어째보면 좀 의미가 있군요. 여기서 지역변수 a는 1로 정의했다고 보이기도 하고,
그리고 조건문은 뒤에 썼죠. 실제로 while 문이 인식할 건 마지막 인자니까요.

6탄에서도 말했지만 (1,2,...,n) 이런 괄호 연산자 실행시 결과는 무조건
마지막에 쓴 n이 나옵니다.

그래서 이걸 활용한 별 희한한 식이 나오기도 하죠.
v.push((c=arguments[i],l=c.length>4?2:1,parseInt((h=c.substr(1+j*l,l),h+(l>1?'':h)), 16)));

이걸 제가 직접 작성했다고 자랑하긴 좀 뭐하죠.
이걸 풀어보면 어떻게 될까요? 풀어봅시다.


c = arguments[i];
l = c.length > 4 ? 2 : 1;
h = c.substr(1 + j * l, l);
h = h + (l > 1 ? '' : h);
v.push(parseInt(h,16));

이렇게 나오는군요.

오늘 골때리는 자바스크립트는 여기까집니다.
괄호 연산자로 잠시동안 쓸 지역변수를 정의하거나, 아니면 잠시 해야 할 연산을 한 다음에, 마지막에 진짜 연산식을 넣는 가방 역할을 하는 이 괄호 연산자.

그다지 쓸데는 없습니다. 왜냐하면 이건 코드 축소하거나 난독화에 쓰이거든요.
거기다가 이건 고급 테크닉입니다. 이거 작성하는데 에러 잡기 정말 힘들겁니다.
먼저 코드를 어떻게 진행해 나갈지부터 확실히 잡힌 다음에 리팩토링하는 게 좋겠죠.
소중한 댓글 부탁드립니다.
추천수 10단위당 메달이 1개씩 노출되고, 추천수에 따라 배경색이 변하며, 일정수의 추천수를 받을시 BEST 아이콘이 붙게됩니다.
추천수에 따른 배경색 보기 본문으로 바로가기
  • 추천수 50개이상
  • 추천수 30개이상
  • 추천수 20개이상
  • 추천수 10개이상
  • 추천수 3개이상
닫기

첫번째 댓글을 남겨주세요!

List of Articles
번호 제목 글쓴이 날짜 추천 수 조회 수
109 모바일 접속시 특정 페이지로 이동 title: [ani]깜빡이는 표정빽짱구 2018-10-21   348
108 생활코딩이라는 사이트입니다. [3] title: [ani]깜빡이는 표정빽짱구 2014-05-14   2475
107 클릭시 내용보여주고 숨기기 [1] title: [ani]방울UI 2013-06-25 1 5065
106 모바일 페이지 코딩시 주소창 사라지는 방법 title: [ani]깜빡이는 표정빽짱구 2012-10-12   6227
105 오늘날짜 스크립트 title: [ani]깜빡이는 표정빽짱구 2011-10-27   6632
104 새로고침할때마다 바뀌는 랜덤배너 소스 title: [ani]깜빡이는 표정빽짱구 2011-07-21   8458
103 hit 모바일페이지에서 주소창 자동숨김 title: [ani]깜빡이는 표정빽짱구 2011-01-19   11329
102 이미지에 마우스 올리면... 이미지가 상하로 살짝쌀짝 웹기프트 2010-11-13   7002
101 롤링 자동 스크립트 웹기프트 2010-11-13   9123
100 아이폰으로 접속했을떄 특정 페이지로 이동시키는 자바스크립트 주영아빠 2010-10-26   7193
99 스위칭 하는 자바스크립트.. 늘푸른 2010-07-24   6898
98 이미지 클릭시 최적사이즈로 팝업 열리게 하는 스크립트 늘푸른 2010-07-24   8127
97 골때리는 자바스크립트 번외편!!! 이병준 2010-05-28   7561
96 골때리는 자바스크립트의 세계 9탄! 이병준 2010-05-28   6827
95 골때리는 자바스크립트의 세계 8탄! 이병준 2010-05-28   6972
94 골때리는 자바스크립트의 세계 7탄! 이병준 2010-05-28   6924
93 골때리는 자바스크립트 5탄!!! 이병준 2010-05-28   6616
92 골때리는 자바스크립트 4탄!!! 이병준 2010-05-28   6596
91 골때리는 자바스크립트 세계 3탄. 이병준 2010-05-28   7584
90 골때리는 자바스크립트 2탄 - JS의 delete문 이병준 2010-05-28   7664