Инструмент минимизации ShrinkSafe жалуется: отладка кода javascript через JSLint: стиль или реальные ошибки? - PullRequest
0 голосов
/ 14 марта 2011

Когда я пытался минимизировать мой файл javascript с помощью ShrinkSafe , потрясающего инструмента минимизации, он вывел пустой файл, который означает, что мой файл javascript, очевидно, содержит ошибку? хотя все работает отлично в пяти браузерах. Поэтому я попробовал JSLint , еще один замечательный веб-сайт, и нашел сотни стилевых ошибок, которые я исправил большинство из них, но я не знаю, как их исправить. Что это за подсказки по стилю и какая потенциальная ошибка может остаться?

Большое спасибо за ваш стиль или исправление ошибок в этих проблемах.

JS LINT сказал, что это

Ошибка

Проблема в строке 38, символ 55: Отсутствует параметр radix.

if (settings.crossLinking && location.hash && parseInt(location.hash.slice(...

Проблема в строке 39, символ 32: Отсутствует параметр radix .

var currentPanel = parseInt(location.hash.slice(1));

Проблема в строке 46, символ 30: 'currentPanel' уже определен .

var currentPanel = settings.firstPanelToLoad;

Проблема в строке 47, символ 24: «смещение» уже определено .

var offset = - (panelWidth*(currentPanel - 1));

Проблема в строке 53, символ 30: 'currentPanel' уже определен .

var currentPanel = 1;

Проблема в строке 108, символ 33: Отсутствует параметр радиуса .

if (sliderCount === parseInt($(this).attr("rel").slice(12))) {

Проблема в строке 111, символ 35: Отсутствует параметр radix .

targetPanel = parseInt($(this).attr("href").slice(1));

Проблема в строке 125, символ 55: Отсутствует параметр радиуса .

if (settings.crossLinking && location.hash && parseInt(location.hash.slice(...

Проблема в строке 137, символ 45: 'currentPanel' используется вне области .

panelHeight = $('.panel:eq(' + (currentPanel - 1) + ')', slider).height();

Проблема в строке 150, символ 73: Ожидается ';' и вместо этого увидел «ползунок».

panelHeight = $('.panel:eq(' + x + ')', slider).height()

Проблема в строке 161, символ 32: «смещение» уже определено .

var offset = - (panelWidth*currentPanel);

Проблема в строке 168, символ 69: 'смещение' используется вне области .

$('.panel-container', slider).animate({ marginLeft: offset }, settings.sl...

Ответы [ 2 ]

3 голосов
/ 14 марта 2011

Отсутствует основание - определенно следует исправить;parseInt должен никогда не использоваться без параметра radix, так как слишком легко ввести ошибку (строка, начинающаяся с "0", интерпретируется как восьмеричное).

Уже определено - иногда ономожет быть ошибкой, потому что вы перезаписываете более раннее значение (которое вам может понадобиться).Типично для временных переменных, но безопасно, если вы знаете, что делаете, и действительно хотите переопределить переменную.

Используется вне области - проверьте, действительно ли это то, что вы хотите;это только предупреждение.

Ожидается ';'и т. д. - Вы, вероятно, пропускаете окончаниев конце заявления.JavaScript будет автоматически вставлять его в конце строки, но никогда не стоит полагаться на это, так как он вставляет ";"иногда в неправильном месте и делает код невозможным для отладки.

Ничто из того, что я вижу, не выглядит как определенная синтаксическая ошибка.Shrinksafe должен минимизировать это нормально.Я советую вам проверить параметры Shrinksafe, чтобы убедиться, что вы что-то упустили.

Также рассмотрим компилятор Closure (простой режим), который обеспечивает более жесткое сжатие, чем Shrinksafe.Закрывающий компилятор похож на JSLint + Shrinksafe, заключенный в один.Ссылка на онлайн-сервис: http://closure -compiler.appspot.com / home

2 голосов
/ 14 марта 2011

Отсутствует параметр radix: функция parseInt принимает 2 параметра. Второе - основание, это необязательно, но JSLint выдает ошибку. Передайте второй параметр как 10 (основание 10), чтобы избавиться от этой ошибки. http://www.w3schools.com/jsref/jsref_parseInt.asp

var xyz уже определен: вам нужно определить переменную, используя var только один раз, для будущих назначений этой же переменной (скажем, currentPanel) опустите переменную

Убедитесь, что у вас есть точка с запятой в конце каждой строки (где это требуется). Пропавший без вести; По моему опыту, это причина номер один, почему код прерывается после его минимизации (так как все разрывы строк удалены)

xyz выходит за рамки: означает, что переменная не была определена в данный момент в коде. Чтобы понять это, потребуется более глубокое понимание кода.

...