A>Кто все еще не признал, пора принять факт и жить дальше
отвратительный язык. мерзкий. сейчас вот сижу читаю код на яваскрипте и чувствую что нифига не понимаю. Вот для примера что это за говно и какой может быть аналог у данного кода в нормальном языке?:
function _typeof(obj) {
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
_typeof = function (obj) {
return typeof obj;
};
} else {
_typeof = function (obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
}
return _typeof(obj);
}
A>>Кто все еще не признал, пора принять факт и жить дальше
D>отвратительный язык. мерзкий. сейчас вот сижу читаю код на яваскрипте и чувствую что нифига не понимаю. Вот для примера что это за говно и какой может быть аналог у данного кода в нормальном языке?:
Не завидую тебе. Похоже, ты читаешь код, созданный транспилятором. Т.е. фактически занимаешься reverse engineering
До транспиляции этот код мог выглядеть как-то так:
typeof obj
Зачем так сделано — это к создателям babel. Скорее всего были причины.
P.S. Я тоже не очень люблю js. Но пример совсем не подходит, чтобы показать "мерзкость" языка
Здравствуйте, Буравчик, Вы писали:
Б>Не завидую тебе. Похоже, ты читаешь код, созданный транспилятором. Т.е. фактически занимаешься reverse engineering Б>Зачем так сделано — это к создателям babel. Скорее всего были причины. Б>P.S. Я тоже не очень люблю js. Но пример совсем не подходит, чтобы показать "мерзкость" языка
Хуже только перл.
Что такое транспилятор? Кто такой babel? Что всё это за гавно?
Только Путин, и никого кроме Путина! О Великий и Могучий Путин — царь на веки веков, навсегда!
Смотрю только Соловьева и Михеева, для меня это самые авторитетные эксперты.
КРЫМ НАШ! СКОРО И ВСЯ УКРАИНА БУДЕТ НАШЕЙ!
Б>P.S. Я тоже не очень люблю js. Но пример совсем не подходит, чтобы показать "мерзкость" языка
А, понял. То есть вместо стандартного typeof запилили свой _typeof который работает в старых браузерах. ну нормально. Зачем только этот код засунули в основной код проекта, нельзя было его куда-то в utils засунуть или типа того
Б>>P.S. Я тоже не очень люблю js. Но пример совсем не подходит, чтобы показать "мерзкость" языка
D>А, понял. То есть вместо стандартного typeof запилили свой _typeof который работает в старых браузерах. ну нормально. Зачем только этот код засунули в основной код проекта, нельзя было его куда-то в utils засунуть или типа того
Нет, ты не понял. Этот код не писал программист, который делал проект. В своем проекте он просто написал typeof obj.
Код, который ты видишь, добавил в проект транспилятор. Поэтому его не нужно засовывать в utils или еще куда-нибудь.
Транспилятор — это как компилятор, только переводит исходный код не в машинные коды (как компилятор), а в другой язык (в данном случае в другую версию этого же языка). Это нужно, в том числе, чтобы нивелировать различия между браузерами, т.к. разные браузеры интерпретируют код js по-разному. Добро пожаловать в реальный мир.
Поэтому повторюсь, ты читаешь "машинный код", и по нему пытаешься восстановить программу. Данный пример показывать только то, что существует куча проблем с совместимостью. А также то, что ты не разобрался в вопросе, и делаешь выводы. Но твой пример не показывает, что js, как язык, плох.
D>А, понял. То есть вместо стандартного typeof запилили свой _typeof который работает в старых браузерах. ну нормально. Зачем только этот код засунули в основной код проекта, нельзя было его куда-то в utils засунуть или типа того
А ещё в некоторых языках принято писать комментарии
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Б>Нет, ты не понял. Этот код не писал программист, который делал проект. В своем проекте он просто написал typeof obj. Б>Код, который ты видишь, добавил в проект транспилятор. Поэтому его не нужно засовывать в utils или еще куда-нибудь.
нет, это код из гитхаба реального проекта svedit.js, а что еще за транспилятор и зачем он нужен?
Тоже чуток зацепил его.
Работа с ним мне напомнила работу с моим собственным поделием. Когда для решения задачи не хватает возможностей поделия, ты, как автор, начинаешь использовать не документированные и не очевидные приемы. Оно, конечно, работает, но окружающие начинают смотреть на тебя с недоверием и поделием пользоваться отказываются.
Этот код сгенерирован, это не исходный файл проект. Фактически это весь проект в одном файле (поэтому файл такой большой).
Об этом даже упоминание в документации на первой странице есть.
Run npm run build-config within the node_modules/svgedit directory.
This will rebuild svgedit-config-iife.js (applying Babel to allow it to work on older browsers and applying Rollup to build all JavaScript into one file). The file will then contain non-ES6 module JavaScript that can work in older browsers. Note that it bundles all of SVGEdit, so it is to be expected that this file will be much larger in size than the original ES6 config file.