2013-03-17 3 views
0
난 그냥

행렬에 잘못된 문자가

여기에 전체 소스의 this matrix on HN in less than 600 bytes을 보았다

있습니다

<body style=margin:0 onload="for(s=window.screen,w=q.width=s.width, 
    h=q.height=s.height,m=Math.random,p=[],i=0;i<256;p[i++]=1); 
    setInterval('9Style=\'rgba(0,0,0,.05)\'9Rect(0,0,w,h)9Style=\'#0F0\'; 
    p.map(function(v,i){9Text(String.fromCharCode(3e4+m()*33),i*10,v); 
    p[i]=v>758+m()*1e4?0:v+10})'.split(9).join(';q.getContext(\'2d\').fill'),33)"> 
    <canvas id=q> 

내 질문은 다수의 변수 시작을위한 할당 않는 방법입니다 : 내가 JS 변수 'setInterval('9Style=\'rgba(0,0,0,.05...) 수 있습니다 생각 숫자로 시작하십시오. 이것은 잘못된 lhs (왼손) 과제가 아니어야합니까?

답변

6

맞아요, 식별자는 숫자로 시작할 수 없습니다. 가까이서 보면 9;q.getContext('2d').fill으로 바뀝니다.

변수를 설정하고 256 1 S 함유 배열 p 만드는 분해 루프 :

s = window.screen, 
w = q.width = s.width, 
h = q.height = s.height, 
m = Math.random, 
p = []; 
for (i = 0; i < 256; p[i++] = 1); 

나머지 :

setInterval(
    '9Style=\'rgba(0,0,0,.05)\'9Rect(0,0,w,h)9Style=\'#0F0\';p.map(function(v,i){9Text(String.fromCharCode(3e4+m()*33),i*10,v);p[i]=v>758+m()*1e4?0:v+10})' 
    .split(9).join(';q.getContext(\'2d\').fill') 
, 33) 

이된다 :

setInterval(";q.getContext('2d').fillStyle='rgba(0,0,0,.05)';q.getContext('2d').fillRect(0,0,w,h);q.getContext('2d').fillStyle='#0F0';p.map(function(v,i){;q.getContext('2d').fillText(String.fromCharCode(3e4+m()*33),i*10,v);p[i]=v>758+m()*1e4?0:v+10})", 33); 

는이 코드를 퍼팅 http://jsbeautifier.org/주는 경우 :

; 
q.getContext('2d').fillStyle = 'rgba(0,0,0,.05)'; 
q.getContext('2d').fillRect(0, 0, w, h); 
q.getContext('2d').fillStyle = '#0F0'; 
p.map(function (v, i) {; 
    q.getContext('2d').fillText(String.fromCharCode(3e4 + m() * 33), i * 10, v); 
    p[i] = v > 758 + m() * 1e4 ? 0 : v + 10 
}) 
1

숫자로 시작하지 않습니다. 이 문자열은 분리되어 있습니다.

'9Style ....'.split(9).join(...

관련 문제