Почему JSLint жалуется на мой JavaScript? - PullRequest
2 голосов
/ 15 апреля 2011
{
   out = rogueArray[13];
   for (var arrayItem in vanWilder) 
   {

Это то, что мне говорят в 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"

Как бы это исправить?Если не вторая ошибка, то, по крайней мере, первая!

1 Ответ

2 голосов
/ 15 апреля 2011

Проблема в строке 52, символ 18. Переместите объявления 'var' в начало функции.

Поскольку JavaScript не имеет области видимости блока, а определения переменных подняты, Крокфордрекомендует размещать все определения переменных в верхней части области.

Подразумеваемый глобальный: requestOne 19,22,25,27, XMLHttpRequest 19, документ 29, из 51

Поскольку out не имеет ключевого слова var слева, оно будет прикреплено к window, что делает его глобальным.

Неиспользуемая переменная: evilVariable 25 "onreadystatechange", redBull 25 "onreadystatechange", wildGoose 25 "onreadystatechange", monkeyWrench 25 "onreadystatechange"

Вы должны были где-то определить переменную evilVariable и не использовать ее.


Помните, Дуглас Крокфорд - умный человек, и его книга JavaScript превосходна, но примите его слово и JSLint как рекомендации одного человека, а не Евангелие.:)

...