2011-04-15 7 views
2
{ 
    out = rogueArray[13]; 
    for (var arrayItem in vanWilder) 
    { 

이는 나는 JSLint에 무엇을 이야기하고있다 :JavaScript가 JSLint에서 불평하는 이유는 무엇입니까?

Error: 

Problem at line 52 character 18: Move 'var' declarations to the top of the function. 

for (var arrayItem in vanWilder) 

Problem at line 52 character 18: Stopping. (30% scanned). 

Implied global: requestOne 19,22,25,27, XMLHttpRequest 19, document 29, out 51 

Unused variable: evilVariable 25 "onreadystatechange", redBull 25 "onreadystatechange", wildGoose 25 "onreadystatechange", monkeyWrench 25 "onreadystatechange" 

어떻게이 문제를 해결할 것인가? 두 번째 오류가 아니라면 첫 번째 오류!

+0

나는 당신의 변수 정의'var arrayItem'을 그것의 최상위에 놓아야한다고 믿는다. –

답변

2

문제점 52 행의 문자 18 : 'var'선언을 함수의 맨 위로 이동하십시오.

JavaScript에는 블록 범위가없고 변수 정의가 올라 가기 때문에 Crockford는 모든 변수 정의를 범위의 맨 위에 배치 할 것을 권장합니다.

묵시적 글로벌 : requestOne 19,22,25,27, XMLHttpRequest의 19 out 때문에 51

가 왼쪽으로 var 키워드가 없습니다 아웃, 29 문서, 그것은에 첨부됩니다 window, 본질적으로 글로벌하게 만듭니다.

사용하지 않는 변수 :

당신은 어딘가 변수 evilVariable을 정의하지 그것을 사용해야합니다 "을 onreadystatechange"evilVariable 25 "을 onreadystatechange"레드 불 25 "을 onreadystatechange", wildGoose 25 "을 onreadystatechange"monkeyWrench (25) .


더글러스 크록 포드는 스마트 남자와 그의 JavaScript 책은 우수, 기억,하지만 한 사람의 권고가 아니라 복음으로 하나님의 말씀과 JSLint을. :)

+0

그래서 var를 정확히 어디에 넣을까요? – Amanda

+0

@Amanda 'var scopedVariable ='Hello ';'와 같이 변수의 범위를 지정해야합니다. – alex

관련 문제