글 수 109
0
조회 수 : 6974 신고 : 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));
이렇게 나오는군요.
오늘 골때리는 자바스크립트는 여기까집니다.
괄호 연산자로 잠시동안 쓸 지역변수를 정의하거나, 아니면 잠시 해야 할 연산을 한 다음에, 마지막에 진짜 연산식을 넣는 가방 역할을 하는 이 괄호 연산자.
그다지 쓸데는 없습니다. 왜냐하면 이건 코드 축소하거나 난독화에 쓰이거든요.
거기다가 이건 고급 테크닉입니다. 이거 작성하는데 에러 잡기 정말 힘들겁니다.
먼저 코드를 어떻게 진행해 나갈지부터 확실히 잡힌 다음에 리팩토링하는 게 좋겠죠.
이번엔 어려워서 골때릴 것 같다구요?
뭐.. 아무렴 어때요.ㅋㅋ
제가 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개씩 노출되고, 추천수에 따라 배경색이 변하며, 일정수의 추천수를 받을시
아이콘이 붙게됩니다.
추천수 10단위당 메달이 1개씩 노출되고, 추천수에 따라 배경색이 변하며, 일정수의 추천수를 받을시
![BEST](/modules/board/skins/xe_webmini/img/common/icon_bestreply.gif)
추천수에 따른 배경색 보기
본문으로 바로가기
- 추천수 50개이상
- 추천수 30개이상
- 추천수 20개이상
- 추천수 10개이상
- 추천수 3개이상
![](/modules/board/skins/xe_webmini/img/pc_emot_co.gif)
첫번째 댓글을 남겨주세요!