2014-11-13 1 views
1

http://www.jslint.com/에서 온라인 lint를 사용하려고합니다. 나는 또한 webstorm을 사용하여 시도했다. 전역 변수 만 가져 오려고합니다. 그러나, 내 코드는 매우 길며 (약 30000 라인) 오직 1 % 만 스캔합니다. lint 또는 다른 도구를 사용하여 전역 변수 만 찾는 방법이 있습니까? 나머지는 중요하지 않습니다. 내 목표는 모든 전역 변수를 창 개체에 첨부하는 것입니다.jslint는 글로벌 변수만을보아야합니다

+1

초기화 후 어느 시점에서'for (value in window) {if (window.hasOwnProperty (value)} {console.log (value)}} '와 같은 것을 실행할 수 있습니까? JSLinted이거나이 경우 JSLintable이라면,'var'의 소스를 grep 할 수 있습니다 (여러 줄의 선언을위한 약간의 여유도 있음). – ruffin

+0

이 코드 라인은 필자가 필요로하는 것입니다. 답으로 쓰면 받아 들일 것입니다. 나는 그것이 더 많은 사람들을 도울 수 있다고 믿습니다. 고맙습니다! – Zbun

+0

물론, 문제 없습니다. 다행이 네가 필요했던거야. 나는 그것을 "진짜"대답으로 바꾸려고 노력했다. – ruffin

답변

1

당신은 파일의 "초기화", 당신은 이런 식으로 뭔가를 실행할 수 있습니다 (당신이 부하 후 전역 객체에 무엇을 찾고있는 경우 즉,) ...

후이 스크립트를 실행 할 수 있다면
for (value in window) { 
    if (window.hasOwnProperty(value)) { 
     if (console.log) console.log(value); 
    } 
} 

코드는 호출 될 때까지 전역 범위에 항목을 추가 할 때까지 기다릴 수 있으므로 코드와의 상호 작용 이후에 전역 컨텍스트에서 더 많은 것을 얻을 수 있습니다.

브라우저 컨텍스트에서 window은 전역 개체이므로 전역 컨텍스트에는 아무 것도 걸리지 않습니다. 다른 문맥에서는 노드에서 다를 수 있습니다 (예 : it's apparently global).

왜 알디스는 hasOwnProperty을 원하는 이유를 설명합니다. here. 간단히 말해 hasOwnProperty은 객체의 속성을 객체 자체로 제한하며 객체의 prototype chain은 추적하지 않습니다. 더 간단히 말하자면, hasOwnProperty을 사용하면 의 코드가 객체에 추가되지 않습니다 (이 경우에는 글로벌 window 컨텍스트).

+0

이것은 정확하게 내가 필요로하고 훨씬 더 단순하고 보풀이었습니다! – Zbun

관련 문제