Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Я учу JavaScript (https://javascript.ru/forum/misc/43357-ya-uchu-javascript.html)

ksa 06.12.2013 15:48

Цитата:

Сообщение от danik.js
у тебя дублируется проверка условия

А ты функцию два раза вызываешь... :)
Вобщем паритетно... :D

Vlasenko Fedor 06.12.2013 16:31

не соглашусь
i = promptNumber(); дублируешь в коде два раза увы повторяешься
for (var getNumber = function () {
          return prompt("Введите любое число больше 5")
        }, i, a = 0; i = getNumber(), a = isNaN(i), 5 >= i || a;)
      //закончили объявление переменных и условие цикла, ниже строчка одна - тело цикла как видите можно без {}
      alert("Вы ввели " + (a ? 'не число' : i) + ". Пожалуйста введите число больше 5");
      alert("Спасибо, вы ввели " + i);

не смотрите на синтаксис всем не угодишь (у каждого своя нотация и тараканы),
вы учитесь самое главное, чтобы понимали, что написано
переписал код с предложенный на странице 4. Ввел переменную a, чтобы не вызывать дважды isNaN(i), можно и без нее, тогда isNaN(i) http://javascript.ru/isNaN в некоторых вариациях будет дважды вызвано как на странице 4

danik.js 06.12.2013 18:49

Цитата:

Сообщение от ksa
А ты функцию два раза вызываешь...
Вобщем паритетно...

Неа. Вызов функции предпочтительней. Допустим тебе лимит нужно установить не 5, а другое значение. Тогда тебе придется изменять код в двух местах, а мне - в одном. Тогда как вызов функции трогать не придется. Разница налицо.
Poznakomlus, ну я ведь привел вариант без дублирования вызова, но он страшный (впрочем не настолько страшный как твой :) ).

Vlasenko Fedor 06.12.2013 19:07

danik.js ,что твой код выведет при вводе символа буквы? :haha:
Да компилятор тот же Closure Compiler сделает из него ...
То от чего бежишь

danik.js 06.12.2013 20:10

Цитата:

Сообщение от Poznakomlus
danik.js ,что твой код выведет при вводе символа буквы?

Я не менял логики, поставленной тс. Если нужны доп. проверки, то лучше всего подойдет уже предложенный здесь do .. while (isError), где isError = isNaN(i) || i < 5
Но уж точно не твой изуродованный for.
Цитата:

Сообщение от Poznakomlus
Да компилятор тот же Closure Compiler сделает из него

То есть я правильно понимаю, что ты пишешь вручную код, прогоняешь через CC и коммитишь результат в свой проект? :dance:

Vlasenko Fedor 06.12.2013 21:05

вот из-за таких конструкций и начинается г-код
return Number(prompt("Введите любое число больше 5"));

никто из вас не поправил
здесь Number http://javascript.ru/Number не нужен
Мой изуродованный for не думаешь, что он лежит в основе всех остальных циклов
В Closure Compiler я пользуюсь по назначению и да смотрю как он меняет конструкции.
Полезно, можно увидеть как он убирает мусор в твоем коде

ksa 06.12.2013 22:25

Цитата:

Сообщение от danik.js
Вызов функции предпочтительней.

Убедил. :yes:

danik.js 07.12.2013 00:55

Цитата:

Сообщение от Poznakomlus
Полезно, можно увидеть как он убирает мусор в твоем коде

Полезно конечно. Но это не значит что нужно начать писать изуродованный код, не предназначенный для чтения людьми. Чет я вобще не понимаю к чему ты тему про CC завел. Если бы мой код ломался после обработки CC, то другое дело.

Цитата:

Сообщение от ksa
Убедил.

Думаю с кэшированием в isError твой вариант не хуже.
А Poznakomlus пускай и дальше откомпилированный "машинный" код пишет ))

Vlasenko Fedor 07.12.2013 01:22

А Poznakomlus пускай ...
Пипец, то есть ошибок (в||т) ы не наделал, а скопипастили код Т.С.
Он же смотрит на вас и думает, что ему код дали правильный от профи
Понятно с повторениями и с ошибками по обработке данных (гомнокод)
этому мы учить будем
"Думаю с кэшированием в isError твой вариант не хуже"
эт ты кому пишешь, где кеширование, isError убрал :haha:
"не предназначенный для чтения людьми" там 5 строк, 4 из них цикл
эт учить нужно наизусть


Часовой пояс GMT +3, время: 08:15.