- 01
 - 02
 - 03
 - 04
 - 05
 - 06
 - 07
 - 08
 - 09
 - 10
 - 11
 - 12
 - 13
 - 14
 - 15
 - 16
 - 17
 - 18
 - 19
 - 20
 - 21
 - 22
 - 23
 - 24
 - 25
 - 26
 - 27
 - 28
 - 29
 - 30
 - 31
 - 32
 - 33
 - 34
 - 35
 - 36
 - 37
 - 38
 
                        // куча if и небольшой кусок логики
// ...
               } else {
                  response["message"] = "Access Denied";
                  response.shortlist = undefined;
                  callback(response);
                }
              } else {
                response["message"] = "Access Denied";
                response.shortlist = undefined;
                callback(response);
              }
            } else {
              response["message"] = "Access Denied";
              response.shortlist = undefined;
              callback(response);
            }
          });
        } else {
          response["message"] = "Access Denied";
          response.shortlist = undefined;
          callback(response);
        }
      } else {
        response["message"] = "Access Denied";
        response.shortlist = undefined;
        callback(response);
      }
    } else {
      response["message"] = "Access Denied";
      response.shortlist = undefined;
      callback(response);
    }
  } else {
    response["message"] = "Invalid Method";
    response.shortlist = undefined;
    callback(response);
  }
                                 
        
https://learn.javascript.ru/es-class - классы есть
Параметры в функциях по умолчанию, ну если очень хочется, то в новой спецификации это тоже есть -
https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Functions/Default_parameters
Очень мало встроенных возможностей - Зайдите на npm и подключайте momentJS для удобной работы с датами (если стандартное не нравится) loadash для работы с массивами, если не нравится стандартная работа с массивами.
https://habrahabr.ru/company/mailru/blog/329258/ - бенчмарки
Не путайте "понятно и логично" с привычно и знакомо.
Колбеки - это зло, согласен, не рекомендую использовать их ни в одном языке программирования, почитайте про callbackHell, если раньше не слышали.
В js есть промисы, есть очереди, производительность nodejs серверов на высоком уровне.
У вас когда-то не получилось что-то, не так как на php - значит говно?
Что?
Где в JS функциональное программирование?
В JS (с тех пор, как появились объекты) есть ещё прототипное программирование. Можно, конечно, предположить, что он спутал функциональное и прототипное, но нам остаётся только гадать.
Прототип-ориентированность это частный случай ООП. Так что товарищ запутался
А если без шуток, но проблема JS, имхо, именно в том что за 20 лет так и не были разработаны удобные практики для прототип-ориентированного программирования, а для класс-ориентиованного они есть.
Люди пытаются эмулировать класс-ориентированный подход в JS и потому он выглядит как говно, прикрученное к стенке синей изолентой.
В ES2015 наконец признали что нужность нормального синтаксиса для класс-ориентированного подхода.
Там теперь стало можно
Эх, пыхомакакам не понять...
А иммутабельные строки и возможность передавать указатель на функцию есть даже в C :)
JS мультипарадигменный ЯП.
> В такой же степени это всё есть в
> JS мультипарадигменный ЯП.
Не сказал бы что, наличие этих возможностей в других языках, и наличие других возможностей в самом JS делает язык категорически не функциональным.
Зашквар императушнёй тут не должен использоваться в качестве важнейшего аргумента, т.к. для ввода-вывода всё равно придётся выйти из чистого мирка.
нет. я начал писать на этих двух языках приблизительно одновременно. и если с php было всё всегда хорошо, то с js батхерт. не потому, что не так как в php. и даже не из-за кроссбраузерности... а просто говно, просто говняное и непродуманое api, раз сколько бы не сталкивался, всегда приходится лезть в доку.
удивительно, что даже классы появились, и даже параметры по умолчанию, просто чудо какое-то, и года не прошло...) то, что это сейчас появляется - только подтверждает мои слова. оно там должно было быть с самого начала. в общем говно...но это сугубо моё мнение, я никому его не навязываю, а просто поделился им. а еще, забавная фича...из-за отсутсвия этих самых классов столько вариантов по организации кода, там тебе и объекты, и функции и модули и всё перемешано...)
это говорит программист на php?;)
Но JavaScript тоже ужасен, я даже не знаю кто страшней.
Но наличие его в браузерах это, конечно, единственная причина, почему он до сих пор жив. Если бы не это, то он давно бы уже оказался на свалке.
Кстати, а какие альтернативы были в браузерах? Я помню, что в IE раньше был vbscript.
https://docs.microsoft.com/en-us/scripting/winscript/windows-script-engines.
Этот же "Script Engine" работает в WSH ("скриптики на локальной машине"), и он же работает на бекенде веба в IIS ("ASP classic")
Разница только в доступных ему объектах: DOM модель в браузере, HTTP request в IIS и всякие WshShell в WSH.
Винда уже лет 20 шипит с собой два скриптинг энджина: JavaScript (для вебовцев) и VBScript (для людей с бекграундом в VB).
Так что в Windows еще 20 лет назад можно было писать на Одном Языке (JS) и на бекенде, и на фронтэнде (за долго до nodejs, лол!).
К сожалению, кросс-платформенность гарантирована только для JS.
Гугл пытался протолкнуть свой Dart. Язык симпатичный, но кроме Chrome его никто не захотел уметь, увы, и Гугл на него забил.
Так что альтернатив нет.
Но! Если смотреть на Ecma 262 как на виртуальную машину, то писать можно на чем угодно, и потом просто под нее компилироваться. Выбор огромен: kotlin (js compiler), java (gwt) ,python (sculp) итд.
Но придется шипить рантайм и стандартную либу этих языков (в браузере=то ее нет), так что это отлично подходит для single-page apps (которые весят 15 мегабайт, грузятся один раз и потом 3 часа работают), а вот делать выпадающие меню для сайтика на этом всем тяжко
Не совсем.
Вот все мило в дарте, но зачем там ключевое слово "new"? В языках где программист не может вручную управлять размещением объекта на стеке/куче, где у тебя никогда нет объектов, а есть только указатели на них -- в таких ЯПах "new" только место занимает.
Это поняли в Kotlin, например.
покажите красивый код на JS
просто интересно
К примеру https://github.com/jasmine/jasmine/blob/master/Gruntfile.js