Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.12.2012, 16:45
Профессор
Посмотреть профиль Найти все сообщения от godofjavascript
 
Регистрация: 11.12.2012
Сообщений: 265

Проблема с closure-compiler в расширеном режиме
вломы его качать так что юзаю эту версию http://closure-compiler.appspot.com/home

суть в том что когда я пихаю это в расширенном режиме то он выдает варнинг


Number of warnings: 1

JSC_DETERMINISTIC_TEST: condition always evaluates to false
left : number
right: (Number|null) at line 21 character 8
return (array.length - 1) === iterationIndex;




что мыл функция ifIterationIsLast всегда возвращает false, но это НЕ ТАК.

Гугл совсем поехал в края далекие?


собственно код который я сжимаю
function test(name, value) {

    var keys = name.split('.');


    keys.forEach(function (key, i) {

        //Последняя ли это итерация, последний ли обрабатывается ключ
        var iterationIsLast = ifIterationIsLast(keys, i);

    });


    /**
     * Проверить последняя ли это итерация прямого обхода массива
     * @param {Array} array массив
     * @param {Number} iterationIndex индекс итерации
     * @returns {boolean}
     */
    function ifIterationIsLast(array, iterationIndex) {
        return (array.length - 1) === iterationIndex;
    }

}

test('System.ff', 31);

Последний раз редактировалось godofjavascript, 25.12.2012 в 17:11.
Ответить с цитированием
  #2 (permalink)  
Старый 25.12.2012, 17:13
Профессор
Посмотреть профиль Найти все сообщения от godofjavascript
 
Регистрация: 11.12.2012
Сообщений: 265

кажется разобрался number и Number не одно и то же
ожидается обект класса Number а не приметивное значение, а передаем приметивное значение, а приведения типов не делаем.


просто поменял запись в jsdoc с Number на number


/**
     * Проверить последняя ли это итерация прямого обхода массива
     * @param {Array} array массив
     * @param {number} iterationIndex индекс итерации
     * @returns {boolean}
     */

Последний раз редактировалось godofjavascript, 25.12.2012 в 17:18.
Ответить с цитированием
  #3 (permalink)  
Старый 26.12.2012, 01:02
Аватар для dmitry111
Профессор
Отправить личное сообщение для dmitry111 Посмотреть профиль Найти все сообщения от dmitry111
 
Регистрация: 26.03.2012
Сообщений: 823

Почему появляются варнинги если функция вызывается без аргумента:
Вот пример:
function a (arg) {
    if (arg) {
    // xxx
    } else {
    // ууу
    }
}
a(xxx);
a();


И чем плох может быть такой код?
Ответить с цитированием
  #4 (permalink)  
Старый 26.12.2012, 01:13
Профессор
Посмотреть профиль Найти все сообщения от godofjavascript
 
Регистрация: 11.12.2012
Сообщений: 265

там написано что код не делает ни чего) и это подозрительно, может вы забыли что то? строка 2 символ 0

а вообще если используешь продвинутый режим то пиши jsdoc, он без него не работает

Последний раз редактировалось godofjavascript, 26.12.2012 в 01:17.
Ответить с цитированием
  #5 (permalink)  
Старый 26.12.2012, 01:58
Аватар для dmitry111
Профессор
Отправить личное сообщение для dmitry111 Посмотреть профиль Найти все сообщения от dmitry111
 
Регистрация: 26.03.2012
Сообщений: 823

Сообщение от godofjavascript
там написано что код не делает ни чего)
ну правильно)) там же в функции ничего и нет) Я просто пример привел

ну вот теперь делает:
function a (arg) {
    if (arg) {
        alert("Привет " + arg)
    } else {
        alert("Привет юзер!");
    }
}
a("Вася");
a();


в advanced выдаст:
JSC_WRONG_ARGUMENT_COUNT: Function a: called with 0 argument(s). Function requires at least 1 argument(s) and no more than 1 argument(s). at line 9 character 0
a();
^

я просто хотел узнать, может так писать код нельзя?


Сообщение от godofjavascript
а вообще если используешь продвинутый режим то пиши jsdoc, он без него не работает
почему не работает? Я уже в адванс моде 2 скрипта сжал, вроде работают

Последний раз редактировалось dmitry111, 26.12.2012 в 02:00.
Ответить с цитированием
  #6 (permalink)  
Старый 26.12.2012, 06:49
Профессор
Посмотреть профиль Найти все сообщения от godofjavascript
 
Регистрация: 11.12.2012
Сообщений: 265

Сообщение от dmitry111
почему не работает?
не работает, а выдает варнинги)

Сообщение от dmitry111
я просто хотел узнать, может так писать код нельзя?
Сообщение от Дзен-трансгуманист
Можно, если объяснить это GCC.
Я же говорю, используй jsdoc

В данном случае просто возьми имя параметра в квадратные скобочки и это будет означать что он не обязательный)
@param {string} [arg]

если просто
@param {string} arg

то обязательный

по умолчанию все обязательные


http://code.google.com/p/jsdoc-toolkit/w/list
интересно а шторм всю эту байду понимает?)

завтра потестю

Последний раз редактировалось godofjavascript, 26.12.2012 в 06:57.
Ответить с цитированием
  #7 (permalink)  
Старый 26.12.2012, 12:32
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от godofjavascript
Гугл совсем поехал в края далекие?
Ты всегда сперва используешь устройство, а только потом читаешь руководство?
https://developers.google.com/closur...n_levels?hl=ru
https://developers.google.com/closur...utorial3?hl=ru
https://developers.google.com/closur...compiler?hl=en
Особое внимаение обрати на инструкцию @expose, когда-нибудь пригодится.

И вообще, пора уже запомнить, что в расширешенный режим GCC не нужно использовать для отдельных файлов, он предназначен только для работы с проектом
Ответить с цитированием
  #8 (permalink)  
Старый 26.12.2012, 13:11
Профессор
Посмотреть профиль Найти все сообщения от godofjavascript
 
Регистрация: 11.12.2012
Сообщений: 265

Сообщение от monolithed
Ты всегда сперва используешь устройство, а только потом читаешь руководство?
Ну да, читаю только если проблемы возникают, и так и надо делать. Только вот при чем тут руководство? Я забыл что у меня === строгое сравнивание а не обычное == , забыл что Number(11) !== 11

и что number !== Number

К тому же руководство на инглише и провести его нереально, а переводчик переводит криво.

Сообщение от monolithed
И вообще, пора уже запомнить
С чего ты взял что я этого не знаю и ли не помню? С чего ты ВООБЩЕ взял что КТО-ТО этого не знает или не помнит? Это же очевидно по тому что он имена не сохраняет и урезает лишнее.


к тому же С ЧЕГО ТЫ ВЗЯЛ что он для этого нужен?? Вообще то можно составить "словарь" вещей которые он не будет сокращать и тогда можно грамотно сжимать разные библиотеки и делать експорт. короче я вообще не понял к чему все это умничество.


п.с. годная ссылка https://developers.google.com/closur...compiler?hl=en

Последний раз редактировалось godofjavascript, 26.12.2012 в 13:18.
Ответить с цитированием
  #9 (permalink)  
Старый 26.12.2012, 16:01
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от godofjavascript
Ну да, читаю только если проблемы возникают, и так и надо делать.
Не всегда

Сообщение от godofjavascript
забыл что Number(11) !== 11
Вернет false

А вот это уже нет:
new Number(11) !== 11


Сообщение от godofjavascript
С чего ты взял что я этого не знаю и ли не помню?
С того, что под advanced mode GCC, код нужно писать зная все особенности GCC в этом режиме.
Ответить с цитированием
  #10 (permalink)  
Старый 26.12.2012, 16:10
Профессор
Посмотреть профиль Найти все сообщения от godofjavascript
 
Регистрация: 11.12.2012
Сообщений: 265

Сообщение от monolithed
Вернет false

А вот это уже нет:
new Number(11) !== 11
в рот мне ноги... КАК)??


Кстати а у гугля есть CSS сжимальщик?

Последний раз редактировалось godofjavascript, 26.12.2012 в 16:12.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не сжимается скрипт в Closure Compiler arozd Общие вопросы Javascript 0 31.10.2012 14:31
Проблема повторного открытия Word в фоновом режиме discribe Общие вопросы Javascript 9 13.04.2012 18:22
Google Closure Compiler Tim Общие вопросы Javascript 12 05.04.2012 17:04
Google closure compiler (веб-сервис) не видит экстерны KOLANICH Общие вопросы Javascript 0 31.01.2011 18:40
скрипт не выдерживает простейших оптимизаций в closure compiler KOLANICH Общие вопросы Javascript 4 30.01.2011 21:49