Двач.hk не отвечает.
Вы видите копию треда, сохраненную 2 сентября 2017 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
JavaScript #84 #1035855 В конец треда | Веб
Ссылка на прошлый тред: >>1030264 (OP)

Этот тред посвящён главному языку будущего - JavaScript. Благодаря своей гибкости используется в браузере, на серверах, в мобильных приложениях, на десктопе и практически во всех видах программирования. Удобный синтаксис позволяет легко писать на нём, а высокая производительность делает его отличным выбором для решения любых задач - от небольших магазинов до огромных highload проектов. JavaScript по праву является самым популярным в мире языком. На каждом сайте есть браузерный JavaScript, а JavaScript на сервере используется такими крупными корпорациями, как Amazon, Yahoo, HP, NASA, Walmart и многие другие.

Часто задаваемые вопросы:
https://github.com/vladimir37/js-thread/blob/master/Wiki/faq.md

Список материалов для изучения:
https://github.com/vladimir37/js-thread/blob/master/Wiki/learn.md

Список инструментов и направления JS-разработки:
https://github.com/vladimir37/js-thread/blob/master/Wiki/tools.md

Конфа /pr/ в Slack:
https://slack-2chpr.herokuapp.com/

JS-конфа в телеграме:
https://telegram.me/jsthread

НЕ КОПИРУЙ КОД ПРЯМО В ТРЕД!
Воспользуйтесь https://jsfiddle.net/ для браузерного кода и https://ideone.com/ для серверного кода.
63 Кб, 400x327
#2 #1035858
Поясните, плз, за TypeScript + gulp.

Thttps://pastebin.com/aV33Q6up
#3 #1035866
>>1035858
В тайпскрипте нет рантайм проверки типа, только проверка при компиляции. Если при компиляции оказывается, что тип некорректен - то он падает с ошибкой. Если нет - то компилируется без проверки. Гугли "runtime type checking".
#4 #1035868
>>1035866

>нет рантайм проверки типа


Спасибо; стоп, а нафиг оно нужно?
То есть, если при компиляции никакого инпута нет, он (инпут) будет от пользователя?
#5 #1035869
Думал я пойти на курсы по фронт енду.
Жа эс я немного знаю, но хотел выучиться как положено.
Записался в епам курсы https://www.training.ru/Registration/Registration/1567
Меня отшили сказав что "Уровень английского у вас не дотягивает до необходимого".
Проверяли мой английский, спросив меня про ёбаные хобби!
Что за хуйня, анон?
Стоят ли подобные курсы того или дома тоже нормально всё учится?
#6 #1035875
>>1035869
есть у меня один чел в зале, выучился недавно на тренера, теперь косит под тренера и всем на уши приседает своей теорией как мы все неправильно делаем - заебал реально. но жмет при этом хуево и мало. короче его советы мы в рот ебем
#7 #1035918
>>1035869
Курсы ЭПАМа нацелены на создание новых для них сотрудников после прохождения пары этапов берут на испытательный, поэтому и английский нужен официальный язык компании

мимо когда-то проходил и вёл подобные курсы
11 Кб, 548x248
#8 #1035978
Аноны, а как получить значение первого свойства объекта на пикриле??

точно нет:
obj.1
obj[1]
obj."1"
#9 #1035986
А тред по Node JS есть? Чет не могу найти.
#10 #1035988
>>1035978
obj["" + "1"]?
#11 #1036000
>>1035978
Никак, он перезаписан.

>>1035988
Проиграл с ЖС магии. Попробуй еще так, может элемент все-таки найдется: obj[true+false+""]
#12 #1036019
>>1035875
Ахуительная история
#13 #1036020
>>1035986
Это здесь
#14 #1036029
>>1035875
есть у меня один чел в офисе, выучился недавно на ментора, теперь косит под коуча и всем на уши приседает своей теорией как мы все неправильно пишем - заебал реально. но коммитит при этом прямо в мастер. короче его советы мы в рот ебем
#15 #1036046
>>1036029

>выучился недавно на ментора


Это как? Где такому учат и что именно там преподают?

>коммитит при этом прямо в мастер


Ему можно, он ведь ментор.
#16 #1036078
>>1036000
спасибо, сразу не догадался прогнать имена свойств на typeof.
#17 #1036101
>>1036029

> коммитит при этом прямо в мастер


Это что-то плохое?
#18 #1036107
>>1036020
Ну ок. Допустим есть readable stream, из которого идет вычитка данных
req.on('data', function (chunk) { data += chunk })
Что после обработки с чунком будет, в смысле не с данными а с куском памяти? Уйдет сборщику на освобождение? При этом стрим для следющей части данных память опять будет выделаться из кучи? Нет какого-либо решения например с колцевым буффером и приостановкой чтения при его заполнении, когда после обработки данных чунк возвращает в стрим. Ну или что-то подобного.
#19 #1036113
>>1036107

> опять будет выделаться из кучи


Ты говоришь это так, как будто это что-то плохое. Если охуенно быстрый generational GC охуенно быстрого движка V8 тебя так волнует, хули ты кодишь свою парашу не на расте?
#20 #1036138
webpack слишком умный.

function nodejsRandomBytes(size) {
.. const crypto = require('crypto')
.. return crypto.randomBytes(size)
}

webpack находит require('crypto') в теле фу-и. добавляет браузерный crypto polifyll. вот же говнюк.
#21 #1036142
К GC у меня претензий нет, на расте кодить нет возможности, ибо пораша большая старая и не моя. Я бы на C все переписал, но это ебанутся можно, пускай Node будет. Но у меня претензия к стриму. Если прокачивать гигабайты данных на приличной скорости, потребление памяти улетает в ебеня, плюс GC забирает большую часть времени CPU, которое должно уходить на обработку полученных данных. В итоге - гроб, кладбище. Нахуя это нужно, если можно все эти гигабайты протащить через кольцо небольших буферов, и при этом известно, что скорость поставки данных данных ниже скорости их обработки.
#22 #1036143
#23 #1036164
Можно ли рассчитывать на зарплату выше 30к, если ты живешь в провинции и пишешь на JS?
#24 #1036178
>>1036164
Возьми да посмотри вакансии у себя в провинции.
#25 #1036195
Поясните за jest. Вот дёргаю я renderer.create component, оно мне попадает в конструктор. Там у меня state loaded сетается в false. И соответственно в снепшот попадает тот флоу.
А как мне дергать компонент что бы самому мокать его states?
#26 #1036214
>>1035855 (OP)
Какие чулочки и платье брать? Как лучше брить тело?
мимо-миддл
#27 #1036253
>>1036195
Отвяжи начальный стейт от компонента, импортируя его из внешнего файла как объект. Мокать будет проще некуда.
#28 #1036330
>>1036164
У
Д
А
Л
Е
Н
К
А
на ней хоть 300000к
#29 #1036332
>>1036214
У бабушки все забирай и у мамки, брейся как мамка, а то бабка даже усы не бреет уже.
#32 #1036555
>>1036423

>В чём причина популярности такого реально хренового языка как JavaScript?


Кто-нибудь пояснит почему все яваскрипт хуями кроют?
Он че блядь должен быть как кресты или че?
#33 #1036561
>>1036555
Лучше как D.
#34 #1036563
>>1036555
Старые пердуны не могут понимать коды без типизации и анальных партянковых полувековых выворотов.
А вообще тут не кодерский фактор, а человеческий.
Есть такие мудаки, которые вместо того чтоб освоить лучше покичиться какие они охуенные дохуя всё знают, а эта хуйня - вообще ее не надо учить, она хуевая и вообще для длобоебов.
Это от комплексов - пытаются залатать то, что не могут осилить язык для веб членодевок, которому меньше лет чем им.
Ну или им как всегда нужно чтоб мухобойка умела и пыль убирать и демократию наводить и чтоб хуй сосала, а если не умеет - то говно без задач.
#35 #1036591
Хочу сделать изоморфный проект на реакте. Какие базворды надо гуглить? react+redux+react router что еще?
#36 #1036598
>>1036591

Для простого проекта тебе этого хватит, ну можешь еще детальнее про JSX почитать.
Ну можешь про React Fiber почитать и сразу вкатиться.
Ну и react-bootstrap.github.io, если ничего особо хитровыебанного делать не надо можешь взять.
Если нужны будут юнит тесты - https://github.com/airbnb/enzyme
#37 #1036602
>>1036598

>React Fiber


Насколько оно пригодно для прода?
#38 #1036621
>>1036602
Хрен его знает, вот чуваки из Тинькофф заявляют, что его юзают https://youtu.be/dot5v3LUsq4 но по факту серверная часть в их банке без js в браузере не работает от слова вообще. Ну и сдаётся мне, что они пилят просто обёртку вокруг старого Java-приложения и сильно недоговаривают.
#39 #1036624
>>1036621
Их банк клиент от версии к версии тормозит все больше. Заебали уже. Открываешь страницу, а она еще 15 секунды просирается. Пиздец.
#40 #1036626
>>1036423
Всё правильно автор расписал.
#41 #1036627
esm vs commonjs и как это говно принятно намазывать на себя в рамках изоморфного приложения?
#42 #1036628
>>1036555
Низнаю, довены не умеют погромировать прост? Один раз прочитал good parts и ебашишь себе, ваще никаких проблем.

>>1036561
Товарищ Александреску, приходите, когда GC почините или выкинете на помойку уже.
#43 #1036629
>>1036626
Илья Михайлович, пожалуйста, пройдите из треда нахуй, Вам тут не рады.
#44 #1036630
>>1036591

> изоморфный проект


Что, блять, простите? гомоморфный образ группы изоморфен фактор-группе
512x512
#45 #1036631
>>1036629
Туши батхёрт, няша.
#46 #1036633
>>1036631
/порашники протекают ту туда то сюда.
Или то они мне везде мерещатся.
#47 #1036634
>>1036630

> Isomorphic JavaScript apps are JavaScript applications that can run both client-side and server-side.


The backend and frontend share the same code.
Ну типа хочу чтобы при первом заходи на /main нода выплевывала сразу html+js, а дальше тот же код уже в браузере все это говно шевелил.
#48 #1036637
>>1036630
Это устаревший хипстерский термин. Типа, была идейка, что раз раз бекенд можно писать на жиес и фронтенд на жиес, то можно написать их так, чтоб они были изоморфны друг другу.
#49 #1036638
>>1036637
С хуя бы он устаревший?
#50 #1036641
>>1036638
потому что так не далают, блядь.
#51 #1036643
>>1036637

> изоморфны друг другу


Горю прост с этих хипстеров, они вообще знают что такое "изоморфность"?
#52 #1036644
>>1036641
Кто тебе сказал-то? В чем проблема, если у тебя есть кусок реакта отрендерить его в стринг со стороны ноды или в дом в браузере?
#53 #1036645
>>1036638
Потому что это баззворд для привлечения внимания, ничего за собой не имеющий? И что раньше им макаки сверкали в каждом втором бложике, а сейчас всем похуй?
Вообще совершенно ебанутое определение, кстати. Вот что значит, что бекенд изоморфен фронтенду? То что они написаны на одном языке и пользуются той же инфраструктурой или что? Очевидно что у бекенд-программы и фронтед-программы будут совершенно различные свойства и структура, какая впизду изоморфность?
#54 #1036648
>>1036598

>ну можешь еще детальнее про JSX почитать.


Нахуя оно надо? Какую проблему оно решает?
#55 #1036649
>>1036645
По идее это должно было значить, что между бекенд-программой и фронтенд программой есть структурная эквивалентность и можно было бы выводить бекенд код из фронтенд кода или наоборот. Как, например, выводить программы из пруфов или наоборот. Но если в комп.сайнсе всякие изоморфизмы Карри - Ховарда ещё уместны, то для прикладного программирования всё это слишком абстрактно и размыто, нужны конкретные реализации и конкретные соответствия, а не просто некая размытая эквивалентность, которая может значить вообще хуй знает что.
#56 #1036651
>>1036649
>>1036645
Вы какие-то ебанутые.
В чем проблема отрендерить реакт с ноды сразу в html, чтобы поисковик мог это говно проиндексировать?
#57 #1036652
>>1035855 (OP)
Продумываю архитектуру хтмл тегов и цсс селекторов.
#58 #1036653
>>1036651
Потому что это охуенно медленно при большом количестве коннектов? Обычно рендерят на бекенде пару страниц, типа гостевой и ещё кое-что, то что до логина? А так, отредерить реакт можно на чём угодно, у чего есть интеграция с V8, хоть на похапе. И главный вопрос, причём тут изоморфность нахуй?
#59 #1036654
>>1036653
Ну ты выдал. Пол интернета работает на пхп, который именно так и делает. С хуя бы это медленно?
isomorphic тут при том, что в мирке жс говно которое работает и в браузере и в ноде так называют.
#61 #1036656
>>1036654

> Пол интернета работает на пхп, который именно так и делает. С хуя бы это медленно?


Логика уровня "полстраны голосует за путина, с хуя ли бы это плохо".
#62 #1036657
>>1036656
Может ты еще в демократию веришь?
#63 #1036658
Мне тоже кажется, что грузить сразу весь бэкенд сайта, а потом переключать его на клиенте - это пиздец, как медленно и костыльно.
#64 #1036659
>>1036657
Блять, хуевый пример дал, щас сюда пол/по протечёт.
#65 #1036660
>>1036651

> поисковик мог это говно проиндексировать


Гугол, например, уже давно пытается жс исполнять. Пускай не расслабляется.
#66 #1036672
Котаны, пишу погромистский бложек на гитхаб ио, хочу заюзать http://codemirror.net/ чтобы посетитель уютного мог поиграться с примером кода и исполнить его. Все на жс, естественно. Как лучше сделать так, чтобы он случайно не распидорасил мне остальные примеры на странице и код страницы? Пока придумал только eval("'use strict'; function() {" + код пидораса из редактора + "}();")
#67 #1036683
Какой брать фреймворк для бэкэнда? Надо сделать обычный крудошлеп, запрос принял, в базу положил и т.д.
#68 #1036691
>>1036672
eval of strict mode code does not introduce new variables into the surrounding scope

А, ну и похуй, всё для людей сделали.
#69 #1036694
>>1036656
Весь этот html код сейчас за всю сессию юзера обычно весит как одна-две картинки на том же сайте, поэтому, передаёшь ты отрендеренный html или json для шаблонизации в браузере -- выигрыш в скорости иллюзорен, а вот сложность и надёжность во втором случае страдают
#70 #1036696
>>1036694
Норкоман, ты вообще в курсе, какие виды нагрузки бывают?
#71 #1036697
>>1036696
Конечно. Я про общий случай работы с теми же текстовыми шаблонами, это ИМХО несущественно даже для средних и больших проектов.

Если есть возможность перенести на клиент какой-то более сложный функционал на клиента -- ок, не спорю
#72 #1036699
>>1036683
ноде експресс
#73 #1036701
ВСЕ ФРОНТЫ БРОСАЕМ РАБОТУ И ПИНАЕМ НОДЕРОВ ИЗОМОРФНО ВСЕ ЕБАШИТЬ.
ща всех в офисе переиграю
#74 #1036705
>>1036697
В 2017 общий случай это когда роутер у тебя на азике, а на цпу говноязык с гц, который прост охуевает от ТЕКСТОВЫХ ШАБЛОНОВ. Подумой, во что всё обычно упирается в 2017, а?
#75 #1036718
Начал изучать TypeScript и появился вопрос - можно ли готовый проект постепенно переводить на тайпскрипт (т.е. когда часть файлов на обычном жс, а часть на тс) или нужно сразу целиком переделать проект на тайпскрипт, чтобы можно было его собрать?
#76 #1036723
>>1036705
Как и всегда: в базу и эзернет.
Что не отменяет того факта, что это охуенный тупизм выполнять на сервере работу, которую можно переложить в браузер юзера (современный дефолтный копуктер вполне жЫрный чтоб этого особо не замечать + и все привыкли уже). Единственный аргумент - это индексация поисковиками и обычно, если это существенно, рендерят на беке только часть. В некоторых случаях это, конечно, неприемлемо, если у тебя там интернет-магаз, к примеру, но если у тебя приложение, где без авторизации делать нахуй - то и рендерить на сервере кроме логин пейджа нечего.
#77 #1036724
>>1036718
Переводил проект с жс на тс. С ключенным any и прочим все равно денек-два, в зависимости от размера проекта, поебешься пока оно сконпилится.
#78 #1036750
>>1036718
Ну смотря сколько ты сам будешь код переписывать, а собрать - за тебя сборщик соберет и работать будет.
#79 #1036764
1. Создал файлик test.js
2. Добавил const internalUtil = require('internal/util');
3. Выполнил node test.js
4. Получил Cannot find module 'internal/util'
Вопрос: почему?
#80 #1036767
>>1036764
'./internal/util'
#81 #1036781
Использовать тернарный оператор в качестве if - разве это нормально?
На codewars стабильно вижу return через ? :
#82 #1036782
>>1036781
А для чего его еще использовать?
#83 #1036783
>>1035866
Ну так всё-таки, типы значений, принимаемых от пользователя, TypeScript сам, значит, проверять не будет?
#84 #1036785
>>1036767
Нет такого пути\модуля в моем локальном каталоге, это builе-in модуль смого nodejs - github.com/nodejs/node/tree/master/lib/internal
#85 #1036787
>>1036783
Пользователь тебе всегда дает String. А дальше ты уже его кастишь/парсишь как тебе надо.
#86 #1036798
>>1036785
Пидорсы, так и написали что не дают эти модули исплоьзовать.
#87 #1036803
>>1036782
для присвоения переменных
в половине книжек пишут, что иное использование - для говнокодеров
#88 #1036806
>>1036803
И чем по твоему return принципиально отличается от присвоения переменной в данном случае?
Считай что ты "присваиваешь" в результат выполнения функции.
#89 #1036828
>>1036806
а ведь правда, слушай, благодарю.
var test = function() {return (a > b) ? "s1" : "s2"}
если сократить, то выйдет
var test = (a > b) ? "s1" : "s2";

пиздец, щас бы на двощах саморазвиваться...
#90 #1037000

> const promiseMiddleware = store => next => action => {


За що вы так с нами.
#91 #1037019
>>1037000
НА САХАР НАДО ДРОЧИТЬ, А НЕ РУГАТЬ.
#92 #1037022
>>1037019
А кто его ругает?
Жду когда можно будет писать

> do


> shit <- liftAff $ random 0 13


> pure $ tasty shit

#93 #1037027
Кто мне блять пояснит за jsx
Нахуя оно нужно?
#94 #1037034
>>1037000
Каррирование наркомана?
#95 #1037035
>>1037027
Проcто так. Кому-то так нравится больше.
Ты можешь то же самое на чистом жс писать.
#96 #1037038
>>1037035
Почти все реактопидоры пользуются им. Неужели нет какой-то охуенной причины?
#97 #1037041
>>1037038
по-моему, половина вещей в JS сейчас проистекают от моды и рекламного шума
#98 #1037042
>>1037038
Ты совсем дегроид что ли? Возьми да попробуй, не понравится - хуярь на ванильке.
#99 #1037044
>>1037042

> Это решает проблему X в условиях Y, при этом имея недостаток Z. Если у тебя есть проблема X и ты в условиях Y, а Z не проблема — попробуй.


> Ждать от дегроида адекватного ответа

#100 #1037046
>>1037038
Потому что это декларативно и охуенно. Пишешь <PizdaZalupa onClick={this.hui} /> и у тебя рендерится компонент Пиздазалупа, по клику на который срабатывает метод хуй. В чем проблема то?
#101 #1037047
>>1037038
Какая тут может быть причина? Ты ведь понимаешь, что jsx преобразовывается в обычный js?

<div className="sidebar">
в
React.createElement(
'div',
{className: 'sidebar'},
null
)
#102 #1037049
>>1037046

> PizdaZalupa({onclick: this.huy})


Нахуя еще один нескучный синтаксис? Чем он лучше обычного жса, что ради него нужно обмазываться бебелем и прочим говном?
#103 #1037050
>>1036253
Окей, а если мне надо ререндерить на изменении этих начальных стейтов?
Сейчас это делает setState. А если это у меня будут не стейты компонента, а аттрибуты объекта, как мне ререндерить.
Завести какой-то фейковый Стейт для реренлеринга сугубо и его сетать после аплейта аттрибутов? Лол
#104 #1037051
>>1037049
В редакторе выглядит как HTML, вот и всё.
#105 #1037054
>>1037051
Блять но нахуя? Шума визуального больше: все эти </ ={}>
В 61 хроме завозят нативные модули и можно ебашить вообще без бабеля. Нет хочу говном обмазываться.
#106 #1037055
>>1037049
Ты тупой или толстый? Затем, что вместо одной няшной строки на "чистом жс" ты будешь писать вот такую >>1037047
залупень, только в случае со сложным компонентом это получится хуита строк на двести.
И что значит "обмазываться бабелем", одна строка в конфиге.
#107 #1037058
>>1037054
и что ты "наебашишь" в продакшн? Заглушку "поставьте 61й хром"?

Олсо, помню времена, когда на сайте писали:
"Сайт работает в кодировке Win-1251", были даже сайты с несколькими версиями под разные, лол
#108 #1037060
>>1037054

> можно ебашить


Ты хоть видел, как "ебашится" на нативных модулях? Как по мне, так даже сборка галпом удобней.
#109 #1037061
>>1037055

> div({className: "sidebar"}, [ span({}, "хуй") ])


Когда приложение работает нативно, хотсвап кода через хром-дебаг-протокол 10/10
>>1037058
Для прода ты один раз собираешь это говно в es3, но на этапе разработки тебе похуй.
#110 #1037062
>>1037061

> Когда приложение работает нативно, хотсвап кода через хром-дебаг-протокол 10/10


Бросай курить спайсы.
#111 #1037073
>>1035855 (OP)
ребята, кто нибудь писал на блазе?
почитал тут маленько, вроде для вката самый простой фреймворк, проще вуя и конечно реактов всяких.
#112 #1037076
>>1037062
Бляяяядь. Хром не умет модули патчить
https://chromium.googlesource.com/v8/v8/+/master/src/inspector/v8-debugger-agent-impl.cc#755
#113 #1037080
>>1037076
Поясните, где лучше всего система модулей реализована? В реакте?
#114 #1037082
>>1037080
Реакт это либа, для рендеринга.
Есть целый зоопарк модулей. По сути интересных есть только два: ESM, то есть нативные модули из спеки es6, которые уже работаю в 60 хроме (за флагом) и будут из коробки в 61. Второй тип это CommonJS, который используется нодой. Пока что нода нихуя не может сделать EMS. Подробней тут: https://hackernoon.com/node-js-tc-39-and-modules-a1118aecf95e
#115 #1037083
>>1037082
Спасиб!
#116 #1037109
Решаю задачу
https://www.codewars.com/kata/the-rarest-pepe/train/javascript

Мое решение под спойлером (скорее всего движок изуродует отступы, но любой бьютифаер исправит ситуацию).
function findRarestPepe(pepes) {
var rarest = pepes.filter(function(pepe, i, arr) {
return (arr.indexOf(pepe) == arr.lastIndexOf(pepe));
});
return (rarest.length == 0) ? 'No rare pepes!' : (rarest.length > 1) ? rarest.sort() : rarest.join();
}


16+- тестов из 100 ругаются, что я возвращаю им 'No rare pepes', хотя по мнению теста должно возвращаться название или массив.

В итоге сделал вывод ВСЕХ элементов ебаного входящего массива в ситуации, когда мой скрипт должен вернуть 'No rare pepes', скопировал ебучий массив в word и нашел там трех Пепе с именем, которое уникально по-мнению результата теста.

Открытых баг-репортов у задачи нет, довольно 92% юзеров, ЧЯДНТ?
224 Кб, 1366x768
#117 #1037178
>>1037109
Ты что-то не то написал

>return (arr.indexOf(pepe) == arr.lastIndexOf(pepe));



Это вообще что? какой смысл брать только с одним вхождением?)
#118 #1037181
>>1037109
сорян, там спойлер( не смотри если че. Там тип что я решил.
#119 #1037198
>>1037109
http://paste.org.ru/?38uzeu
Держи. Все 103 теста прошли с 1 раза. Хз в чем твоя проблема.
#120 #1037204
На странице 81 кнопка. Получил массив ссылок на эти кнопки через document.getElementsByTagName. Хочу для каждой из кнопки написать событие посредством цикла:

var buttons = document.getElementsByTagName('button');
for (var i = 0; i < buttons.length; i++)
{
buttons.onclick = function()
{
buttons.style.backgroundColor = 'black';
}
}

Почему это не работает? И должно ли вообще?
#121 #1037208
>>1037204
for (var i = 0; i < buttons.length; i++)
{
buttons.onclick = function()
{
buttons.style.backgroundColor = 'black';
}
#122 #1037209
>>1037204

>Получил массив


Не пизди. Ты не получил массив.
#123 #1037210
>>1037204
>>1037208
Ты не задумывался о том что ты не юзаешь счетчик цикла в теле?

> buttons.onclick = function() { this.stlye...

#124 #1037212
>>1037209
https://ideone.com/bEujRt
Если ты про . (Двач подумал что я италик хочу сделать наверное)
#125 #1037214
>>1037204

>массив ссылок на эти кнопки через document.getElementsByTagName


Это не массив. RTFM.
#126 #1037215
>>1037210
Кекус, это двощи жрут разметку?

> buttons [ i ]


Короче у тебя там походу стандартная ошибка с циклом в жс. Поменяй var на let
#127 #1037216
>>1037215
Заработало. А почему такая ошибка возникает?
#128 #1037217
>>1037212
Нет, я про то, что ты НЕ ПОЛУЧАЛ НИКАКОГО МАССИВА. Ты пытаешься работать с НЕ МАССИВОМ, думая что это у тебя массив. Иди читай документацию.
#129 #1037222
>>1037198
Вот еще сортировку лишнюю выпилил. Какая же ебучая стандартная либа у жс.
http://paste.org.ru/?yt46df
#130 #1037224
>>1037217
Хорошо, не помешало бы.
62 Кб, 653x498
#131 #1037232
>>1037222
Что-то ты излишне усложняешь все.
#132 #1037233
>>1037216
Не слушай ебанутого про массивы. Это тут вообще не при чем.
Проблема в том var поднимается наверх функции. Например:
function() {
var arr = [1,2,3];
for (var i = 0; i < 3; i++) {
...
}
}
На самом деле надо читать как

function() {
var arr = [1,2,3];
var i = undefined
for (i = 0; i < 3; i++) {
...
}
}
Поэтому когда ты в теле цикла присваиваешь в
buttons = function() { buttons ... }
то значение i не разные на каждую созданную функцию, а одно глобальное.
Таким образом для всех созданных обработчиков значение i после выхода из цикла будет = 3
Обычно это решается либо через IIF, либо заменой var на let, либо просто не пользуются элементом в замыкании.
2,5 Мб, webm, 1280x720, 0:21
#133 #1037244
Какой язык для бека учить?
Чтобы можно было работу найти и это было не умирающее говно вроде PHP.
Что за Ruby скажите?
#134 #1037252
>>1037244
дауны безуспешно пытаются хоронить PHP столько же, сколько он отжирает свои 80+ процентов всего веба
#135 #1037269
>>1037244

>Что за Ruby скажите?


Умершее говно
Учи джс, язык будущего на всех платформах
#136 #1037272
>>1037233

>то значение i не разные на каждую созданную функцию, а одно глобальное



А как то, что эта переменная поднимается вверх функции (в моем случае она будет в Global Scope) мешает выполнится моей программе? https://ideone.com/Go22lv - это весь код который у меня есть. Не более. Let же в свою очередь просто заставляет переменную жить в пределах цикла, верно? Как то, что она живет вне цикла, мешает мне задать кнопкам евенты?
#137 #1037275
>>1037272
Добавь в обработчик console.log(i) и поймешь.
#138 #1037284
>>1037244
Для бека есть node.js.
1,1 Мб, webm, 1280x720, 0:07
#139 #1037288
>>1037269>>1037284

>Чтобы можно было работу найти


Что-то я сомневаюсь что ноду используют для бека.
#140 #1037292
Я так понел, в ближайшее время половина всего веба будет на реакте, вторая - на ангуляре. Всё это будет работать на ноде, поставленной на нджинкс.

Красота же, верно?
#141 #1037295
>>1037272
Это известный подводный камень в замыканиях, не только в жс.
Когда ты идешь по циклу, то у тебя разные функции замыкают одну и ту же переменную i, которая меняется по ходу цикла, то есть у тебя под конец десяток функций с одинаковым i.
C let у тебя на каждой итерации создается новая переменная, поэтому каждая функция будет замыкать разные i.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let#Cleaner_code_in_inner_functions
#142 #1037307
>>1037288
Это возможно для небольших сайтов.
Для крупных сервисов пока что может оказаться медленновато.
#143 #1037311
КТО НИБУДЬ РАБОТАЛ С БЛАЗЕ? СТОИТ ЛИ УЧИТЬ ЭТОТ ФРЕЙМВОРК?
#144 #1037313
>>1037292
Не совсем. "ближайшее время" наступит, когда js-школота наберётся лет 15 опыта и перейдут на другие языки, js тем временем допилят до вменяемого состояния, его станут поддерживать большинство хостеров и т.д.

А пока -- мечтай и жди
#145 #1037317
>>1037295
Спасибо анон!
#146 #1037318
>>1036555
В язык намешана куча говна отовсюду, но при этом есть дохуя фич, которые в эту кучу не включили. Недавно начал писать небольшое приложение на чистом JS, и что сразу бросается в глаза:
1) Нет named parameters(на самом деле есть, но реализация через костыль и текущей спецификацией не поддерживается, нужно перегонять)
2) require в язык не завезли, потому что говно для браузеров, приходится пользоваться нодокостылем, с которым нужно ебаться ради простейших вещей: https://gist.github.com/branneman/8048520
3) Язык динамический, но из-за пункта 2 нет удобного DI, только ебля с контейнерами или пляски вокруг require костыля.
4) Mutable objects - главный пиздец, приходится постоянно следить, чтобы функция, которая получает на вход параметры, ничего с этими параметрами не натворила, так как клонировать объект нормально нельзя, только через костыль, опять же. (deep clone? сосите хуй, мы такого не могем!)
5) Ну и всякие мелочи, вроде кривой реализации ООП, которой приходится пользоваться, так как функциональщину на JS писать будет только отбитый.
6) Самый главный минус - коммьюнити ебанутых макак, которые не имеют ни малейшего представления о том, как писать поддерживаемый код и имеют дохуя тупорылых практик и убеждений. Сторонняя библиотека для каждого пука, абсолютное отсутствие культуры тестирования, огромная любовь к эвентам, из-за чего код всегда превращается в кучу лапши и т.д и т.п. Костыли еще можно обуздать, привыкнуть и более-менее работать, но к коммьюнити не привыкнешь никогда. Как только начинаешь гуглить нетривиальный вопрос, то на тебя выливается ушат дерьма и антипаттернов, за которые нужно бить в ебало.

JS - это accident language, в здравом уме никто бы на нем не писал, но выбора у людей нет, к сожалению. Ждем и надеемся.
#147 #1037331
>>1037313

>js тем временем допилят до вменяемого состояния


Но он уже вменяемый, просто нужно понять, что это язык совершенно нового типа.
Суть JS - в его гибкости. И со временем он будет расширяться именно в эту строну.

>его станут поддерживать большинство хостеров


Уже.
#148 #1037339
>>1037331
так, и что же в нём нового типа?
#149 #1037364
>>1036633
Таблетки выпей, шизик малолетний.
#150 #1037369
>>1037318
програмил на говне, вкатился в жс говно и теперь тебе не нравится что он не похож на твое предыдущее говно? не парься! чувствительным нытикам в этом комунити тоже место есть, поэтому добро пожаловать пидор ебаный
#151 #1037374
>>1037318

> функциональщину на JS писать будет только отбитый


Ловите наркомана
#152 #1037383
>>1037369
Я говорю про то, что тут нет даже базового функционала, который в любой другой язык был добавлен десять лет назад. На похожесть мне похуй, суть везде одна.
>>1037374
Что это за вскукарек? Ты вообще в своей жизни трогал тру-функциональный язык или для тебя это "хуе мое функции там, рекурсия, объектов нет ебана"?
#153 #1037386
>>1037383
А чего ты ждал?

Выросло целое поколение школьников, которые не знают ничего, кроме кучи js-библиотек, естественно они с ужасом уходят в отрицание окружающего мира, хех
#154 #1037387
>>1037383

>тут нет даже базового функционала


имплементируй, мы только рады будем
#155 #1037389
>>1037383

> тру-функциональный язык


Функциональное программирование - про композицию функций. Но ты, петух, конечно начнешь кукарекать про иммутабельность, систему типов и прочий нахуй не нужный никому, кроме отбитых на голову хачей теоркат.

Я пишу на F# на работе.
#156 #1037390
>>1037387
Все уже заимплементировано давно, даже такая наркомания как fantasy land. Только нахуй это никому не нужно кроме хачей-петухов, дрочащих в своем загоне. Хули им там не сидится?
#157 #1037391
>>1037318

> deep clone? сосите хуй, мы такого не могем!


И чем тебя не устраивает lodash.deepClone, а?
#158 #1037393
>>1037387
Может сразу свой язык имплементировать тогда уж? Чего мелочиться.
>>1037387

>про иммутабельность


>нахуй не нужный никому


>функциональное программирование


Бляяяяяяяяяяяяяяя. Ну и ты я смотрю уже прошарен. Часто спорил с функциональщиками, а они тебя обоссывали?
#159 #1037394
>>1037393
Посоны 50 лет на лиспе писали с мутабельностью, а тут теперь внезапно они стали императивными петухами. Вот они обрадуюутся то.
#160 #1037396
>>1037391
Тем, что это отдельная библиотека с кучей ненужного мне говна. Добавление сторонней библиотеки - это очень важное решение и в 90% случаев можно и нужно обойтись без нее, невероятный факт для JS-мирка. Эту функцию я и сам написать могу, она достаточно тривиальна. Главная проблема в том, что мне НУЖНО ее писать, потому что в языке базового функционала не присутствует. Ну а про любовь JSников к куче бесполезных библиотек я уже говорил выше.
>>1037394
Лисп никогда и не считался тру-функциональным языком.
#161 #1037398
>>1037396
Не волнуйся, это пройдет через пару-тройку лет. Ну может через пять. Вздрочни пока, скинь злобу.
#162 #1037400
>>1037398
По делу лучше что-нибудь напиши, чулочник хуев.
#163 #1037401
>>1037400
По делу — ты мудак, иди нахуй. Может быть в крестах у тебя в языке дохуя функциональности без libc/stl?
Или может в хачкеле без прелюды?
Или ты кроме пхп в который напихали кучу всего больше ничего и не видел?
Или ты микрософто макака, и тебе дотнета не доложили?
#164 #1037402
>>1037393

>Может сразу свой язык имплементировать тогда уж?


а, так ты критик языков, арбитр изящества, мастер секции комментариев. я то думал ты программист. прикольно что ты кричишь типа все макаки а сам ссышь язык запилить - кто получается макака тогда - короче впишешься прям норм в комунити
#165 #1037411
>>1037401
Я не говорю, что библиотеки не нужны, я говорю, что сторонняя библиотека или уж тем более фреймворк - это огромная зависимость от кода хуй знает кого. Сейчас в коммьюнити многих языков об этом забыли и добавляют библиотеки для каждого пука, но особого апогея подобная практика достигла у жсеров вследствие ущербности языка. Всегда сначала нужно писать функционал и планировать архитектуру приложения, и уже только потом по мере большой надобности добавлять библиотеки и фреймворки, не наоборот.
>>1037402

>не смейте критиковать мое говно, сами возьмите и напишите лучше!!!!


Шизя, успокойся, таблетки прими.
#166 #1037413
>>1037411
Поверь, 99% библиотек, которыми пользуются люди, стабильней чем любое твоё говно, которое ты навелосипедишь. Особого апогея она достигла в крестах, где есть stl и boost
#167 #1037414
>>1037411
причина твоего недовольства чем-то обычно не в самом предмете а в том что твоя жизнь в жопе, хочешь что-то поменять - начни с себя
39 Кб, 693x206
#168 #1037419
>>1037232
Да не говори 8(
#169 #1037422
React и Angular используются еще для чего-то кроме SPA?
#170 #1037433
>>1037413

>поверь


Ты мне так рассказываешь, как будто я первый год программирую. Библиотеки хороши ровно до того момента, пока твои требования совпадают с их функционалом, которой обычно либо базовый, либо так нахуеверчен, что тянет с собой 8521 опций, которые никогда не понадобятся. Шаг вправо-шаг влево - и придется писать свой велосипед, либо ДОБАВЛЯТЬ ЕЩЕ ОДНУ БИБЛИОТЕКУ, РАСШИРЯЮЩУЮ ФУНКЦИОНАЛ СТАРОЙ, БИБЛИОТЕКА САМА СЕБЯ НЕ ДОБАВИТ. Что значит "стабильней" в этом плане, я не понимаю. Если ты не можешь написать свой кусок кода для клонирования объектов и не обосраться, то как ты пишешь целое приложение со сложной логикой и не обсираешься? Примеры есть, тесты есть(должны быть), и у тебя будет полный контроль над тем, что делает твой код. В случае с библиотекой ты отдаешь кусок кода хуй знает кому и надеешься, что библиотека протестирована и не сломает весь твой фунционал после очередного обновления, из-за упущенного разработчиком edge case.
#171 #1037452
суп
помогите горе-фроненду
в 2 словах: на старых версиях хрома\фф (48\27) не работает opacity
https://jsfiddle.net/v9rt8ufg/2/
видел сайты с похожей анимацией, работающие корректно
#172 #1037476
Ребята, заебали нахуй))
Подскажите плз что там с БЛАЗЕ? Судя по тому шо я видел это проще реакта и вуя.
26 Кб, 600x576
#173 #1037494
Анон, я тут пишу одну хуйню вместе с пхп, и абсолютно все формы сделал ажаксом, при этом новые элементы я добавляю просто append(текстэлемента), все функции объявляю в стиле js, а код внутри - с использованием jquery. Еще button onclick делаю. С одной стороны, все ясно написано и легко разбирается, но с другой кажется, что это хуйня какая-то. Что я делаю не так, кроме смешивания ванильных и jquery методов?
#174 #1037496
>>1037494

> 2017


> jquery

#175 #1037520
Для чего используется сравнение ==, объясните. Оно быстрее работает или что?
Я в своих скриптах всегда использую только === и !==, но ведь для чего-то же придумали дополнительную операцию нестрогого сравнения?
#176 #1037521
>>1037496
Двачую. После появления fetch пропала последняя причина использовать jQuery:
https://habrahabr.ru/post/252941/
Можно сдавать его в музей к Cobol, Delphi, GWT и VBScript.
#177 #1037524
>>1037521
>>1037496
Лол, использую jquery только для селекторов, toggleClass и ажакса, больше ничего и не нужно, разве что более короткое написание value. Алсо, у меня еще дизайн на бутстрапе
#178 #1037525
>>1037520
Строка и число
#179 #1037530
>>1037520
'100' == 100
undefined == null
[8] == 8
[8] == '8'
[8, 1] == '8,1'
#180 #1037531
>>1037476
Это ты заебал. Очевидно же, что раз тебе до сих пор никто не ответил, значит никто с этим не работал.

Или ты считаешь, что все обязаны тыкать палочкой каждую из миллиарда библиотек и фреймворков?
#181 #1037533
>>1037524

>для селекторов


querySelector/querySelectorAll

>toggleClass


ванильный classList.toggle

>ажакса


fetch/ да и сам xmlhttprequest2 простейшая штука, которая давно везде и с ней не надо ебаться как с первым и писать даунгрейды.
#182 #1037570
>>1037530
Лично я щитаю, что == есть смысл использовать только там, где нужно проверить на !== undefined && !== null. В остальных случаях нихуя не понятно.
#183 #1037575
>>1037307
Знаю пару банков у которых бек на ноде
Ну часть с сертификатами - на яве, но все остальное крутится на ноде, еще и 0.12 версии.
Народ часто переоценивает свои потребности и недооценивает возможности ноды
#184 #1037576
>>1037339

> нового типа


нет типов
BADUMTSSS
Вообще есть но блядь шутка сука отъебитесь, СМЕЙТЕСЬ ИЛИ ЗАБАНЮ
#185 #1037577
>>1037364
Да, это точно из по пришел, у какой злючий.
#186 #1037580
>>1037433

>пока твои требования совпадают с их функционалом, которой обычно либо базовый, либо так нахуеверчен, что тянет с собой 8521 опций, которые никогда не понадобятся.


> что тянет с собой 8521 опций, которые никогда не понадобятся.


Ебать нихуя, у тебя на других языках библиотеки ЧИСТО ПОД ТЕБЯ всегда заточены и ты из них максимум выжимаешь?А у жс плак плак ЛЮДИ ПИХАТЬ ТО ЧТО Я НЕ ИСПОЛЬЗУЮ В БИБЛИОТЕКИ КАКОЙ КАЛ.
Ты зашел не в тот тред и не с тем настроем.
#187 #1037581
>>1037476
ну перейди на него, только не ной что полтора работодателя и те в жопу ебут.
#188 #1037588
>>1037520
Если у тебя все сурйозно и не должно быть конвертаций в проверках и все должно работать как ты задумал - то ===, елси всякое может быть и впринципе конвертация безопасна - то == поможет с кейсами
e.g. когда где-нибудь в ответе false заменят на [], а потом на undefined когда-нибудь в будущем то с == можно будет не париться, он сам все подгонит и код будет работать дальше.
#189 #1037643
>>1037433
Мань, успокойся, в lodash/fp/альтернативах функциональщику нужно натурально все. Если бы ты действительно пришел из фп - ты бы это знал.

Насчет твоих ко-ко-ко это ни мейнтейнер языка кодил никачественно - так это вообще пиздец.
В 2017 половина хуйни уже на гитхабчике, даже ебаный асп.нет, нет блять я не буду им пользоваться, он в язык не встроен!
#190 #1037646
https://tproger.ru/books/free-javascript-books-for-beginners/
http://flibs.site/r?b=267602
что по поводу этих книжек? Мне нужно большое количество примеров и паттернов.
13 Кб, 221x214
#191 #1037670
>>1037533
Я не хочу переписывать половину работающего проекта, ведь у меня все равно есть jQuery от бутстрапа
#192 #1037683
Антуасы, есть такая проблема. Надо вывести тонну картинок мелких на страницу. Если все разом отдавать все браузеры висят по 6 секунд. Как это сделать так что бы все постепенно прогружаллсь не блокируя интерфейс.
#193 #1037708
>>1037683
Сделать из тонны мелких одну большую, не?
#194 #1037716
>>1037109
Потому что оно так и задумывалось.
Простой пример:
У тебя есть следующий список:
["Рейр Пепе", "Рейр Пепе"].
Так вот. Этот пепе - достаточно рейр. Потому что его не более 5.
А в случае со списком
["Рейр Пепе", "Рейр Пепе", "Юник Пепе"] оно должно вернуть только Юник Пепе, потому что он более редкий, чем Рейр Пепе (юника всего один, а рейров - два).
#195 #1037718
>>1037683

> Надо вывести тонну картинок мелких на страницу. Если все разом отдавать все браузеры висят по 6 секунд.


Задай каждой картинке ширину и высоту. И тогда они будут грузиться по мере, гхм, загрузки.
#196 #1037731
>>1037708
С этим проблема, достаются из базы php по одной.
#197 #1037793
>>1036591
почти, только react router - ебаный кал, и ты заебешься когда захочешь сделать что-то по своему в плане архитектуры, и придется костылять в обход, потому что у разрабов роутера было другое представление о жизниони пидоры. с редуксом вообще работает как говно - особенно 4я версия - отдельный стор для роутера? я в рот ебал. а на гитхабе тебя пошлют нахуй, потому что они зарабатывают бабки на консалтинге и проект нацелен на выкачивание бабок из лохов, а не на юзабельность. вобщем лучше свой сам напиши.
#198 #1037889
>>1037793
Поясни что с ним не так? Судя по докам/примерам все довольно просто.
#199 #1037908
>>1037889
ну ты поюзай и поймешь. для обычных дом.страничек типа home-contacts норм решение конечно, но если у тебя своя архитектура а не архитектура так как ее задумали авторы роутера - шаг влево шаг вправо - и ты уже накостылял кучу какого-то говна, которого и вообще не было без сраной либы этой. для прикола можешь также посмотреть какая в доках редукса версия роутера(2?) и какая текущая(4). каждую версию они перемакакивают всю либу и ты заучиваешь ее заново, если хочешь новую версию юзать. этот проект не must как редукс, а так подрочить
#200 #1037915
>>1037683
На каждую имагу повесь хендлер onload события. По результатам загрузки каждого изображения (или, допустим, n изображений) отдавай пользователю ещё пачку.
#201 #1037917
>>1037915

> отдавай пользователю ещё пачку


Или дергай из массива, конечно же.
#202 #1037924
>>1037908
Сможешь привезти пример, где роутер создавал больше проблем, чем решал?
#203 #1037928
>>1035855 (OP)
Спасибо что обновляете пасту, люблю вас.
#204 #1037934
>>1037924
могу тебе даже доклад с подробным анализом написать и иллюстрации горящего пердака нарисовать к нему в стиле material, мой рейт - 90 баксов в час - где-то за неделю справлюсь. а так бугурты можешь почитать тут https://news.ycombinator.com/item?id=12511419
sage #205 #1037935
>>1035855 (OP)

> главному языку будущего - JavaScript


1. Когда в главный язык будущего завезут ключевые слова class, interface, extends, implements, protected, public, private, final, static?
2. Когда в главный язык будущего завезут разницу между int и float/double (даже в PHP это разные типы) в коробке (в не в Web Assembly)?
3. Когда в браузеры завезут Тайпскрипт из коробки?
#206 #1037937
>>1037935
Микрософтоблять порвалась. Несите следущую.
#207 #1037939
>>1037935

> ООП


> 2017

512x512
sage #208 #1037947
>>1037937

> class, interface


> int, float, double


> TypeScript


> Микрософтоблять

#209 #1037949
>>1037917
Spasibo, я думаю массив хороший вариант.
#210 #1037952
Реквестирую самый годный туториал/пример по реакт-редуксу.
#211 #1037975
Поясните за стили в реакте. Была какая-то новомодная тенденция все пихать в инлайн стили. Как щас модней всего?
#212 #1038015
>>1037525
>>1037530
>>1037570
Ничего не понял. Т.е. кроме редкой конвертации типа '100' == 100 оно больше и не нужно? Бред же, для этого есть parseInt toString. Но даже в TypeScript сохранили операцию нестрогого (не)равенства, значит, она широко используется?
#213 #1038020
>>1037935

>3. Когда в браузеры завезут Тайпскрипт из коробки?


В Edge могли бы и добавить, петуханы. Никому нахуй ненужный ублюдочный VBScript во всех IE поддерживался, а этот передовой язык почему-то нет.
#214 #1038025
>>1038015
ОБРАТНАЯ СОВМЕСТИМОСТЬ
Б
Р
А
Т
Н
А
Я

С
О
В
М
Е
С
Т
И
М
О
С
Т
Ь
#216 #1038030
>>1037975
держать их в цссе
#217 #1038044
>>1038025
В первых версиях JS не было === штоле?
#218 #1038062
https://ru.wikipedia.org/wiki/JavaScript

>Первоначально язык назывался Mocha


Хороший язык мочой не обзовут.
#219 #1038113
>>1037575
...ну то есть весь сертифицированный банковский функционал на jave, а вокруг дешёвые прогеры яваскрипт рисуют кнопки на обёртке из годы

пофиксил
#220 #1038115
>>1038113

> банковский функционал на jave


Я не знаю каким отбитым надо быть, чтобы реализовывать критическую логику на императивной параше.
#221 #1038118
>>1037521
Зачем отказываться от удобной и быстрой в текущей ветке jQuery? Перед шкальниками выёбываться? Так они и так этим заняты дни на пролёт,пока у нормальных людей нет на это времени.
#222 #1038126
>>1038115

> Пишет в треде о скриптовом языке, который подобострастно назвали в честь Java (а-ля Абибас)


> Выёбывается


Пфф
#223 #1038136
>>1038015
Нет, самый распространненый юхкейс, это обновременная проверка на null и undefined.
#224 #1038138
>>1038015

>Бред же,


Если ты не понимаешь, зачем нужно приведение типа, и уповаешь на каноничную НЕОБХОДИМУЮ ЯВНОСТЬ. То почему ты до сих пор не пишешь на асме, и не вызываешь функции, путем складывания аргументов на стек, и передачей управления по адресу, а используешь такую НЕЯВНУЮ func() в своем коде?
#225 #1038229
>>1037975
модно styled components, но синтакс сомнительный там и редакторы мало поддерживают. еще styled-jss ничего, но там на уровне беты. а так - микс инлайн стилей и css-modules
>>1037952
начни с обычного реакта и пили пока не почувствуешь боль, когда нужно шарить и влиять на стейт из разных мест. потом можно уже и редукс
#226 #1038314
>>1038229

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


Пробрасываю стейт родительским компонентам через контекст, далее dumb компонентам - через пропсы. Все штатными реактовскими средствами.
Всё-таки потребность в редуксе должна возникать не из-за желания изменять состояние приложения из различных мест...
#227 #1038325
>>1038138
Динамический петух закукарекал заместо Авроры. {} - ++[[++[]]] это же так понятно, очевидно, полезно.
#228 #1038326
>>1038325
А тебе зачем писать такие конструкции, демагог мамкин? Ты ебанутый?
#229 #1038329
>>1038326
Затем, что складывать объекты с числами и получать НаН - это, блять, ненормально, не должно быть такого в языке. Должны быть строгие типы, чтобы было понятно, с чем вообще дело-то имеем, а не "сложи то, не знаю что, с тем, не знаю чем, получи вообще хуй пойми что"
#230 #1038334
>>1038329
Ты посмотри на это с другой стороны.
Разве это не открывает широкие возможности по написанию обфускаторов, которые потом можно впаривать по $59.99 скрипткиддисам?
#231 #1038337
>>1038329

>не должно быть такого


>должны быть строгие


>чтобы было понятно


Мне тебя жаль.
#232 #1038339
>>1038334
Для маркетолуха, может, что-то там чего-то и открывает. Для меня лично это означает ровно две вещи:

1. Мне нужно везде писать === вместо ==, а если я пишу ==, то это либо ошибка, либо обдуманное и сознательное решение => нужно писать коммент.
2. Проект среднего размера и более превращается в сраное говно, ведь ни одна сигнатура не является самодокументируемой, ни один класс не является самодокументируемым, везде нужно постоянно либо помнить, что именно нужно передавать вот в конкретно эту функцию, либо опять же писать хуеву гору комментов. В реакте есть вроде проптайпсы, но они не слишком-то облегчают положение. Скорее даже наоборот, добавляют только лишнего гемора, т.к. нужно постоянно поддерживать их в актуальном состоянии.
#233 #1038341
>>1038337

>true + false - [] + {} - NaN, рррряяяяяя

#234 #1038343
>>1038339
Что, написание лишнего символа "=" для строго сравнения сократит продолжительность твоей жизни? Звучит как жалкое оправдание, рилли.

Самодокументируемые функции - миф.

Проптайпсы в реакте нужны для тестирования.
#235 #1038344
>>1038341
проиграл
#236 #1038347
>>1038343

>Что, написание лишнего символа "=" для строго сравнения сократит продолжительность твоей жизни?


Жопой читаем? Написал же русским по серому - везде, где в коде будет все-таки использоваться == вместо ===, придется приписывать пояснение, почему в данном случае сравнение с приведением типов не вызовет кузькину мать.

>Самодокументируемые функции - миф.


Самодокументируемая функция - функция, контракт которой ясен из нее самой. Так что да, в жсе они, конечно, миф, раз сигнатура-то, по сути, никакой информации не несет, не то что о типах, а даже о количестве аргументов.
#237 #1038398
>>1037318
подписываюсь под каждым словом про комьюнити, да и в целом всё так и есть
js комьюнити - это как раз и есть канализация с пика, только еще булькающая
каждый пузырёк - новая либа или язык поверх js
#238 #1038425
Установил babel-cli
в скриптах пишу "start": "babel-node ./server.js"
там сервак на экспрессе с es6
так вот первый раз запускается нормально, когда убиваю процесс в git bash, сервер остается висеть прослушиваемым пока не перезагружу комп
повторный npm run start выдает ошибка т.к. сервак уже висит
вот чо за хуйня, посмотрел у всех все нормально, погуглил ничего не нашел
#239 #1038426
>>1038314
контекст сломают рано или поздно поэтому смысл его использовать. и пробрасывать пропсы через неск уровней и уродливый код который из этого следует мне не оч
#240 #1038430
>>1038425
node -r babel-register ./server.js
#241 #1038441
>>1038430

>node -r babel-register ./server.js


все равно такая же хуйня
заметил что когда в консоли прямо пишу "node ./server.js" все нормально работает, т.е. убиваю процесс и сервер падает
а когда эту же команду пишу через npm run start в скрипте "start": "node ./server.js", появляется такая вот хуйн
#242 #1038486
>>1038426

> контекст сломают рано или поздно


...и полетят ВСЕ сторонние стейт менеджеры. Да, пейсбук предупреждает об этом явно, но вероятность брейкинг чейнджес откровенно мала.
По поводу красоты кода - это уже отдельная тема. В моем прожекте это нисколько не ухудшило читаемость, потому что я придерживаюсь определенных правил.
В корневом компоненте описываю начальный стейт и импортирую экшоны, джаст лайк ин редакс, все это дело аккуратно засосываю в контекст.
Далее, в компонентах уровнем ниже (эти компоненты являются корневыми по роутам) импортируется набор экшонов и стейт из контекста. А уже в каждый дочерний компонент из корневого передается два пропса - actions и store. Никакой путаницы, никаких инжектов стейта из контекста в компонентах на нижнем уровне.
Все работает без редакса, потому как для моих задач сторонний стейт менеджер это оверкилл.
#243 #1038536
>>1037952
по реакту, на самом деле, лучше и проще официальной документации ты ничего не найдешь.
По редаксу можно видосы с лерн код или еще что-то на примере рабочего приложения. Redux/MobX и другие имплементации общего стораджа довольно полезные вещи (сам сейчас на реакте и редакс ппц как упрощает жизнь и делает код и взаимодействие компонентов понятнее)
#244 #1038624
Ставлю на WebStorm тему Sublime, а она выглядит совсем иначе чем на скринах. Чё за хуйня? Хочу всё также как на самом Sublime Text 3.
#245 #1038645
>>1038441

>npm run start


попробуй yarn
#246 #1038648
>>1038486
понятно
#247 #1038687

> Обеспечено inline-развёртывание и оптимизация операций Array.prototype.forEach;


Вай-вай. Заживем.
40 Кб, 537x600
Как выучить джаваскрипт? #248 #1038879
Сап, посоны. Есть три стула:
1. Учить джаваскрипт по спираченным с торрента интенсивам htmlacademy.
Из плюсов: бесплатно, можно проходить не торопясь, с перерывами.
Из минусов: вне работы мой организм отказывается что-либо изучать новое, тяжело себя мотивировать смотреть видосы и делать задачи. Еще и автопроверки нет, как на джавараше.
2. Пройти тот же интенсив, но платно на htmlacademy.
Плюсы: возможно, таки узнаю много нового, но это не точно.
Минусы: бабло
3. Пройти платный курс на learn.javascript.ru
Плюсы и минусы те же.
Ну и возможно четвертый вариант, который предложит мне анон.

Сам уже работаю веб-программистом, но чувствую, что есть пробелы, ибо учил все на ходу, по мере необходимости.
#249 #1038900
>>1038879
Что-то у тебя все стулья с хуями. Накачай себе разных книг и читай в свободное время. Гугли по работе все места, которые не понимаешь, эффект будет заметнее чем от курсов.
#250 #1038909
>>1038879

>вне работы мой организм отказывается что-либо изучать новое, тяжело себя мотивировать смотреть видосы и делать задачи


Ну так правильно, потому что видосы и задачи - хуйня без задач (вот это я скаламбурил). Сразу бери и хуярь что-нибудь полезное и серьезное, по ходу дела разберешься во всем, и гораздо быстрее и лучше, чем если будешь сидеть дрочить себе полгода подзалупными задачками.
#251 #1038918
>>1038879
Только книги, только хардкор.
И никаких задач. Только маняпроекты.
#252 #1038919
Как на js будет выглядеть такая функция? Вызывается функция в которую вписываем вопрос. Вопрос задается до тех пор пока не будет ответа 'y' или 'n'. Ну и потом этот ответ возвращается и выводится.

def ask_yes_no(question):
____response = None
____while response not in ("y", "n"):
________response = input(question).lower()
____return response

answer = ask_yes_no("\nPlease enter 'y' or 'n': ")
print("Thanks for entering:", answer)
#254 #1038928
>>1038921
kakoije ebanytiy yazik))))")))
#255 #1038929
>>1038928
Тебе никто не мешает написать мутабельный цикл как в пиздоне. Просто это ни модна.
#256 #1038931
Сап, ребят.
Я или поехал, или что.
С каких пор нельзя сделать Object.setPrototypeOf(Object.prototype, )??

Так всегда было, или это новые спеки? У меня от чего-то четкая уверенность (или ложные воспоминания), что раньше можно было удленять дефолтную цепочку.
#257 #1038937
>>1038879
Парашекурсы интенсивы, блять, этож надо было такую хуйню придумать, просто пиздец - хуйня и не нужны. Применяя язык в манязадачах со свистоперделками ты забудешь всё нахуй через неделю.
#258 #1038943
>>1038937
Просто тебе мамка не дала денег на эти шикарные интенсивы.
#259 #1038945
>>1038919
function ask_yes_no(question) {
____let response = null;
____while (!['y','n'].includes(response))
________response = prompt(question).toLowerCase();
____return response;
}

let answer = ask_yes_no("Please enter 'y' or 'n':");
alert("Thanks for entering: " + answer);
#260 #1038955
>>1038929
Там есть предел рекурсии или она будет ебашить пока не сожрет всю память? Предполагаем, что tail call elimitation нет.
#261 #1038956
>>1038943
Я лучше куплю шикарный интенсив моему члену на интимсити.
#262 #1038958
>>1038955
Если TCO нет, то треснет, очевидно. В хроме оптимизация вроде пока за флагом.
#263 #1038959
>>1038958
Я думаю оно ебнется на глубине где-т тысяч 30 лье под водой, поэтому похуй.
#264 #1038963
>>1038879

> Сап, посоны. Есть три стула:


> 1. Учить джаваскрипт по спираченным с торрента интенсивам htmlacademy.


> Из плюсов: бесплатно, можно проходить не торопясь, с перерывами.


> Из минусов: вне работы мой организм отказывается что-либо изучать новое, тяжело себя мотивировать смотреть видосы и делать задачи. Еще и автопроверки нет, как на джавараше.


> 2. Пройти тот же интенсив, но платно на htmlacademy.


> Плюсы: возможно, таки узнаю много нового, но это не точно.


> Минусы: бабло


> 3. Пройти платный курс на learn.javascript.ru


> Плюсы и минусы те же.


> Ну и возможно четвертый вариант, который предложит мне анон.


> Сам уже работаю веб-программистом, но чувствую, что есть пробелы, ибо учил все на ходу, по мере необходимости.


Ща бы купить видосов на 100 часов где пересказывают синтаксис.
#265 #1038965
>>1038963
В интенсивах фишка в том, что наставники попу подтирают
#266 #1038966
>>1038965
На hexlet интереснее: можно купить время ментора, который поможет закончить петпроэкт
#267 #1038968
Могу за пивас давать пизды и объяснять непонятную хуйню.
#268 #1038969
>>1038968

>Могу за пивас давать пизды


А она у тебя няшная?
#269 #1038972
>>1038965

> В интенсивах фишка в том, что наставники попу подтирают


Ещё 10 часов рассказов о синтаксисе?
#270 #1038975
>>1038972
Да. Если ты за 100 часов не понял.

В детстве родители нанимали репетитора по английскому. Молодую тян. В воспоминаниях об этих занятиях остался только образ груди выглядывающей из слегка расстегнутой спортивной куртки.
#271 #1038976
>>1038900
Оке.
>>1038909
Думал об этом. Таки да, когда есть идея, мотивация будет как будто тянка поебаццо позвала.

>>1038918
Понял, спасибо.

>>1038937
>>1038963
Согласен. Да и по цене получается 80К за все курсы академии - как-то многовато. Я на джавараш в 2014 за 100$ весь курс купил, так там дохуя всего дается с задачами и теорией. А щас вот в веб перекатился, думал, найду аналоги, а хуй там. Буду пилить свой проектик тогда и дрочить по книгам.
#272 #1038977
>>1038968
Можешь просто сидеть с суровым видом рядом, чтобы я не отвлекался на двощ и любую другую хуйню, пока не позанимаюсь нормально.
#273 #1038980
>>1038965

> попу подтирают


Ну и чему ты научишься, ежели тебе попу подтирают? Мамка вон тебе до 12 лет подтирала и посмотри кем ты вырос?
#274 #1038981
>>1038980

>до 12 лет


А почему не до 40 лет?
#275 #1038987
>>1038977
Бери ноут и пиздуй из дома, чтобы без инета.
#276 #1039023
Какую IDE лучше использовать вкатывающемуся в JS шарпоёбу, привыкшему к Visual Studio с ее IntelliSense? Студия кажется тяжеловатой для жс, Sublime и Atom иногда неправильно подсвечивают синтаксис и не могут в автодополнение.
#277 #1039024
>>1039023
vs code
#278 #1039039
Читая доки по редаксу, возникает ощущение, что проще сразу брать элм или пюрешку, чем пытаться на честном слове писать на нем.
#279 #1039045
>>1039024
Два чаю, она охуенная.
#280 #1039069
(function(){
//код
}());

такого рода синтаксис еще юзается? или модные let или чвойтоеще заменили?
#282 #1039114
>>1039073
спасибо
#283 #1039808
>>1038956
двачирую этого дона, ресурсы надо распределять грамотно
#284 #1039809
>>1038921
скобки не нужны когда один параметр
#285 #1039820
программирую через стакоферфлов

Антоны объясните плизки чзх чего оно через классы не хочет?
https://jsfiddle.net/xLqzL09k
https://jsfiddle.net/xLqzL09k/1/

еррор :
document.getElementByClassName is not a function
#286 #1039821
>>1039820
Тебе ж на чистом английском пишут: document.getElementByClassName - это не функция. Т.е. такой функции не существует. Потому что elements, ведь оно может возвращать много.
#287 #1039822
>>1039820
Тебе же написали, не существует такой функции. Что не понятного?
#288 #1039824
>>1039820
все разобрался
дело было в том что getElementByClassName не функция
#289 #1039988
>>1039824
Сделал его функцией?
#290 #1039990
Крч, создаю объект workers = {}, в нем создаю еще один объект workers[x]. В этом объекте создаю кучу листенеров.
workers[x] должен отработать последовательность действий.
Но иногда он фейлит и нужно запускать процесс с начала.
delete workers[x] не убивает листенеры. Вопрос: как убить все связанное со свойством объекта самым простым способом?
#291 #1040017
>>1039990

>delete workers[x] не убивает листенеры


Для удаления лиснеров существуют отдельные методы.
#292 #1040026
>>1040017
Спасибо, кэп.
#293 #1040117
>>1039988
нет использовал getElementById :--(
#294 #1040210
когда уже this.blah() заменят на @blah()?
@ -> this
@name -> this.name
#295 #1040298
>>1040210

> 2017


> js


> this

#296 #1040325
>>1040298
obj.x = function() { this.doSmth() }
как без this?
#297 #1040326
Подскажите учебник или что-то по Angular 2. Чисто в проде кинули на помощь фронту, надо быстро вкатиться.
#298 #1040331
>>1040325
Не пользоваться ООП объектно-ориентированной парашей? Не использовать функции без аргументов, которые мутируют хуй пойми что? Как тебе такое, а?А?А?
#299 #1040333
антоны не стукайте плиз
https://jsfiddle.net/dxnz11q5/
скролл вниз - нормально выезжает
скролл вверх - после анимации пропадает, как и должно
скролл опять вниз - после анимации пропадает, как не должно
почему оно не удаляет листенер?
и может подскажите как сделать, чтобы при быстром скролле туда-сюда анимация продалжалась а не с самого начала тригирилась?
#300 #1040357
>>1040331
не вижу разницы для читаемости между:
function x(obj) { doSmth(obj) }
и предыдущим примером. хотя нет, this всеже понятнее. вот если this заменить на @, будет еще лучше.

они меняют obj, а не хуй пойми что.
#301 #1040375
Эй, жира-кун, а скока тебе платят? На хх.ру вакансии 200-240+
#302 #1040378
>>1040375
что за хх.ру?
200-240 чего?
#303 #1040381
>>1040378
хуев в жопу тебе
#304 #1040390
есть два варианта. 1.Выводится html шаблон в котором сразу 500 img 2.Жабаскриптом добавляю по 1. Какой вариант быстрее? Почему?
#305 #1040401
Подскажите плз аналог Browserstack только бесплатный, на вм и работающий на локалхосте?
#306 #1040412
>>1040117
А мог бы просто исправить опечатку, в названии метода. getElementsByClassName
#307 #1040424
>>1040333
бумп
ебусь 5 часов не могу понять в чем пробемла
#308 #1040449
>>1040333

>почему оно не удаляет листенер?


С хуя ли не удаляет?
Ты вообще в курсе, сколько ты лиснеров вешаешь?
Повесь алерт в блок else и охуеешь от того, сколько раз у он тебя затриггерится.
101 Кб, 1000x795
#309 #1040476
>>1040449
от души спосибо я подебил эту хуергу через i = 1 i = 0 маме операция нужна не супер серьезная но денег нет она не может работаь несколько месяцев теперь я стал на ступень выше к джуну надеюсь как можно скорее смогу пойти на работу сам спасибо огромное!!!!!!
#310 #1040486
>>1040378
Если это то ты, то видимо ты не из раисси. Мкай.
#311 #1040546
>>1040357
Читаемость тут причем, императивный даун?
#312 #1040610
>>1040546
ну а зачем мне сокращение this -> @?

кстати, ничто не мешает писать объекты, где метод который меняет объект, будет возвращать новую копию.
#313 #1040612
>>1040610

>писать объекты, где метод который меняет объект, будет возвращать новую копию


Совсем ебанулся уже со своим хачкилем.
#314 #1040701
>>1040610

> писать объекты, где метод который меняет объект, будет возвращать новую копию


Он начинает о чём-то догадываться. Осталось сделать последний шаг - избавиться нахуй от объектов.
#315 #1040718
>>1040701
Избавился от объектов тебе за щеку, проверь.
#316 #1040727
>>1040610
Бегом кантора читать, а до этого в тред ни ногой
#317 #1040729
Анончик, поясни: подойдёт ли Angular 2 для фронта с ~12 полноценными шаблонами экранов (не компонентами)? Задачи типовые: вывод списков, слайдеры-хуяйдеры, карта.
Сложных компонентов вроде как нет, но предстоит заёбистая логика валидации, переходов и реста по кд.
Ранее пользовал ангуляр первый. Но все пишут, что АНГУЛЯР 2 ЭТО ГРОМОЗДКО И ОВЕРКОД, ПИЗДАРИКИ ГОТОВЫМ КОМПОНЕНТАМ, ТОЛЬКО ДЛЯ БОЛЬШИХ ПРОЕКТОВ.
#318 #1040733
Как дебажить реакт+редакс? Хром дев тулз в рот ебали этот ваш jsx
#319 #1040741
>>1040727
почему? какую главу читать в канторе?
вроде бы, я не новичек.
#320 #1040753
>>1040733
Ставь соответствующие плагины к хрому.
Для редакса вон вообще таймлапс придумали
43 Кб, 540x541
#321 #1040762
Кто мне может пояснить нахуя там
skipTracking и viewChangeCounter?
https://github.com/gothinkster/react-redux-realworld-example-app/blob/master/src/middleware.js
#322 #1040794
Аноны, кто-нибудь писал юнит тесты в NodeJS? Запускаю тест - вываливает ексепшн - модуль не найдет. Хотя модуль есть, инсталлирован глобально. Не понимаю что за гавно такое.
#323 #1040798
>>1040794
Ах, да, тест mocha-ой гоняю, вернее пытаюсь.
#324 #1040827
Котаны, правильно ли я понимаю?
Вот мы создаем переменную с функцией:

var fnctn_one = function() {
return 'haha';
}

Потом создаем новую переменную и туда копируем первую:

var fnctn_two = fnctn_one;

Мы можем изменять вторую переменную как угодно, и первая меняться НЕ БУДЕТ? Правильно? Изменяться будет копия?
#325 #1040841
>>1040827
fnctn_one/two хранят ссылки.
что такое ссылка, без программирования?
положи яблоко на стол и в тетрадке запиши: яблоко на столе.
добавь еще одну запись в тетрадь: яблоко на столе.
теперь затри первую запись, замени ее: есть еще одно яблоко в подвале.
от того, что ты затер запись, яблоко с стола не исчезло.
вторая запись все еще есть.

другой человек может посмотреть в тетрадь и найти яблоко. если он его откусит, то яблоко изменится, хотя ссылка так и будет указывать на яблоко, но уже на кусок яблока.
#326 #1040858
>>1040741

> я не новичек


> не знает о парадигмах программирования абсолютно нихуя

#327 #1040862
>>1040794

> модуль не найдет. Хотя модуль есть, инсталлирован глобально


Глобальная инсталляция в ноде только для утилит командной строки нужна. require парашу в каждый проект надо инсталлить локально.
#328 #1040947
>>1040841
Тебе с такими объяснениями только в школе преподавать.
112 Кб, 1896x918
#329 #1041056
>>1037109
Норм сайтик, буду на работе развлекаться этой хуйней)
#330 #1041064
https://habrahabr.ru/company/ruvds/blog/335144/
Порадовался. Будет им уроком, не хрен городить инфраструктуру уровня Java для языка, который двигает формочки. Дали вам <script src="...">, вот и не умничайте.
#331 #1041070
>>1041064
Это ты еще про left-pad не слышал.
#332 #1041072
>>1041070
Слышал, ну так им не привыкать сосать.
#333 #1041075
>>1041072
Кстати, может тот обиженный программистишка и накоммитил малварь, чтобы отомстить.
#334 #1041079
>>1040862
Благодарю.
#335 #1041092
Ява для пидоров
#337 #1041368
>>1035855 (OP)
Имею список вида [id: 1, name: "Vasya", company: "KFC" ...]

Как мне достать элементы по типу key = value, чтобы было так
id = 1;
name = "Vasya";
company = "KFC" ?
#339 #1041380
Пацантре, подскажите. Мучу игрулю в которой будет диалоговая система. Вот сижу думаю как выстроить дерево диалогов, то есть само дерево диалогов я прекрасно понимаю как выстроить, меня интересует как реализовать "выбор". Пока придумал впихивать в текст диалога СПАНЫ или ХРЕФЫ с яваскриптом внутри. Чтобы оно появлялось в диалоговом окне, и на эти ссылочки жмякаешь, и вызывается функция с определенными аргументами чтобы там статы поменять и нужное продолжение диалога запустить. Вроде бы просто, да вот думаю что строю замок из костылей и велосипедов.
#340 #1041386
>>1041380
Ну и?
#341 #1041390
>>1041386
Как мне с помощью JS запихать работающий JS код на HTML страницу?
#342 #1041392
>>1041390
Зачем запихивать ЖС код через ЖС, который уже подключен к этой хтмл странице?
#343 #1041397
>>1041392
Ты долбоеб ебучий, написано же
#344 #1041400
>>1041390
Делай из него стринг, пихай его в тег <script> и всобачивай через append какой-нибудь (но почему бы тебе самому ручками его в .html файле не вписать?)
#345 #1041401
>>1041400
Ну так у меня бесконечное множество диалогов с различными выборами которые могут вызывывать различные функции, и всего одно диалоговое окно которое очищается после выбора варианта.
#346 #1041407
>>1041380
eval же
#347 #1041421
Спасибо за советы, и правда нету смысла городить evalы, пихать код в стринг. Просто создам несколько спанов с запасом, спрячу их, и когда будет выбор буду через функцию динамически их менять по всякому. Можно же спокойно вызов с функции с аргументами запихать в строку и через ИннерХТМЛ приписать к элементу
#349 #1041448
суп фронты. такое запитание: а чем натюнить VSCode шоб он мог в рефакторинг - понимал где какие переменные пропали/появились, понимал область видимости и помогал отыскивать проблемы типа

adres, addres, adress, address, adderss ?

var и let обьявления ?
#350 #1041456
>>1041380

>как реализовать "выбор"


Запили либо свой миниязык для диалогов, либо в каком-нибудь формате их складывай (xml/json/yaml/s-expr/etc)
#351 #1041464
>>1041456
Да не вариант на самом деле. В игре эти диалоги слишком сильно зависят или влияют на различные переменные. Так что в итоге выйдет куча вызовов функций, куча проверок, и между ними ссылочка на контейнер с нужной фразой. Проще и понятнее держать все рядом. Ну это пока, потом может запилю мини велосипед чтобы смотрелось аккуратнее. Аналог ренпаевской системы например.
#352 #1041473
пацаны, помогите плз... делаю кое-что на ноде, но столкнулся с проблемой
использую из npm библиотеку, в документации написано вот так

функция getState(callback)

spotify.getState(function(err, state){
/
state = {
volume: 99,
position: 232,
state: 'playing'
}
/
});

вопрос, как использовать, например, state.volume в другой функции? пробовал внутри функции присвоить

let huy = state.volume, но huy я не могу использовать за ковычками, undefined получается

я программирую не больше недели, как только пытался, не получилось. колбэки, офк, не знаю как работают. куда идти читать про это?
#353 #1041716
let hui;

spotify.getState(function(err, state){
/
state = {
volume: 99,
position: 232,
state: 'playing'
}
hui = state.volume;
/
});
#354 #1041718
Зделол свой первый пет-прожект на node, express, mongodb. Куда теперь там прикручивать реакт/ангуляр чтоб модно было? А то я чото ума не приложу.
#355 #1041782
>>1041448
Eslint?
#356 #1041821
Посоветуйте книгу для обучения, прогал на кумире и паскале АВС, решая простенькие задачки.
Или из шапки по порядку в самый раз?
#357 #1041857
Какая разница между NW.JS и Electron? Что лучше? Что выбрать? Почему?
#358 #1041918
На работе предлагают стать фулстеком на ноде, сейчас я фронтенд-макакен.
Соглашаться или нет?
#359 #1041926
>>1041857

>Что выбрать?


Electrino

>Почему?


Потому что использует нативный рендерер.
#360 #1041938
>>1041926
Ой мудак.
#361 #1041954
>>1041938

>Кукарекуууу.


Ясно.
sage #362 #1041963
>>1041718
Никуда.

Backend отдельно, frontend отдельно
#363 #1041981
Есть какая-то альтернатива хероку, куда можно залить свой говноблог на koa.js?
#364 #1041982
>>1041918
Если будут больше платить, почему нет? Сорта говна одни и теже.
#365 #1041983
>>1036330
А кто будет помогать и код ревьюить?
#366 #1042005
>>1041963
Но я хочу по фуллстэку угореть. С бэкэндом разобрался помогло то, что приходилось раньше работать с джавой и пхп, а как на это повесить фронт я чото даже не знаю, с какой стороны подобраться.
101 Кб, 1200x1186
#367 #1042046
Нормальный человек не будет марать руки о javascript
#368 #1042047
>>1042046
Да ладно тебе, многие вон и 1с-кой не брезгуют.
#369 #1042048
>>1042046
А обо что будет? О пхп? Или в пиздон? МОжет быть руби? Или может кложура? Какая разница на какой динамической параше писать?
sage #370 #1042053
>>1042047
Они не знают о существовании js.
>>1042048
Не жс, главное не жс.
#371 #1042092
>>1041981
Неебу что такое коажс, но если у тебя онли статика то
github.io?
#372 #1042101
>>1042092
а вот есть сервисы где не только для статики
#373 #1042150
>>1041448
webstorm
#374 #1042180
Ананас, почем сейчас стоит вчерашний джуниор в ДС-2? Интересуют зарплатные вилки в нетто выражении.
#375 #1042183
>>1042180
Меньше 50 не проси.
#376 #1042184
>>1042183
Вы охуели что ли?
#377 #1042185
>>1042183
Бакесов в час?
#378 #1042187
>>1042184
Почему охуели?

>>1042185
килорубасов в месяц
#379 #1042191
>>1042184
Если просить меньше, то ты подписываешься под тем что ты тварь дрожащая. Студентоте с 0 опыта 50 дают.
#380 #1042230
Блядь как в этой ебаной виндовс шрифты удалить? Хром ебаный тянет все время локальный шрифт, а не его аналог с гуглофона, локальный корявый пиздос. Удалиться не удаляется, потому что УЖЕ ИСПОЛЬЗУЕТСЯ блядь, перезагрузил, а вот хуй, они уже все сразу заняты и хуй удалил.
#381 #1042262
Джуном получаю 900 баксов в месяц в ДС.
Американская компания, работаю с бекбоун.
#382 #1042273
>>1042262
И что?
#383 #1042281
>>1042262
как долго учил жс?
#384 #1042296
>>1042281
Почитал книжку по жс, примерно месяц поделал задачки и начал искать работу.
sage #385 #1042303
>>1042191
Охуеть, значит любой даун сможет так зарабатывать? И в чем прелесть программирования тогда.
#386 #1042335
>>1042303

>50к


>зарабатывать

#387 #1042339
>>1042101
Это вопрос? Да, есть. Платные. Бесплатные хероку-говна уровня. Нахуя для бложика не статика?
#388 #1042344
>>1042335

> 150к


> зарабатывать

#389 #1042386
>>1042344

>300к гривен


>зарабатывать

#390 #1042391
>>1042386
Грывни это рубли деленные на 2.5, математик хуев.
А вообще в треде лучше никого не слушать - тут один джуны и капелька пре-мидлов, так что дельных советов не услышишь - надо идти на тематические форумные тусовки.
#391 #1042393
>>1042391
Форумы для даунов застрявших в 2001
#392 #1042399
>>1042393
Сейчас они имеют вид аля пикабушечки.
Типо вместо отедьлной темы - ПОСТ, и под ним в комментах сидят бурлят.
Хабр тоже не просто новостной агрегатор
#393 #1042403
>>1042399
Лучше на гиттере найти уютненькую комнатку единомышленников. И квалификация повыше, и узкоспециализированную конфу найти не проблема, да и общение поактивнее будет.
#394 #1042413
>>1042344
Сегодня видел на HN плач о том что 50к зеленых в год это джуновская зп.
#395 #1042415
>>1042413
50к предлагают рабам из снг на первом этапе. -30% налогов, выходит примерно как в дс-x
#396 #1042425
>>1042413
Для Bay area это копейки, например.
#397 #1042430
>>1042415
Джуном без опыта 500$ на первой работе получал на руки.
Надо просто знать куда ломиться.
Я вообще первый годик по стартапам тусил, там проще с устровойством в разы.
А потом уже можешь на свою макака-галеру веслорабом устраиваться и гребсти с другими рабами.
#398 #1042437
>>1042430
50к баксов в год если че
#399 #1042460
>>1042437
Ну я понял, нечаянно реплай прикрепился.
Так если на старте сможешь сразу на ремоуте кому-то втюхаться то уже хорошо.
Я ж в первое время вообще одну страничку верстал месяц еще и как ракал и я хз ктоб такого долбоеба еще содержал кроме местных стартапов.
#400 #1042474
Слушайте слушайте, есть проблема, я неплохо разбираюсь в js, сейчас дрочу react, с этим проблем вообще нет, но очень плохо могу в css, анимации, трансформации, всякие трюки, меня хватает на bootstrap для стилизации, насколько вообще критично фронту шарить в верстке, недели две ищу работу и очень много где требуют "хорошее знание css/адаптивная верстка/хуй пизда джигурда. Бросать все и учить css или искать нормальную контору, где этим занимается верстак?
#401 #1042475
>>1042474
Я сами стили-то понимаю, чужой код понять смогу, но когда начинаю свой css писать, все идет по пизде.
#402 #1042478
>>1042474
Ты же мордой занимаешься, не знать как морду пилить - как минимум хуйово.
Ну это не главное, но понимать как это работает надо, и по хорошему из версталы становиться жс макакой надо.
Ну в это въехать не сложно, так что для базы посиди на хабре почитай статьи по верстке. Главное чтоб ты въезжал как тебе сделать какой-то блок и как это сделать (костылями не костылями - но хоть как нибудь).
Это не сложно, так что быстро въедешь и базы вполне хватит, если близко с этим не работаешь.
#403 #1042485
>>1042478
Спасибо, я понял, буду не отдельно свойства учить, а элементы страниц верстать
#404 #1042542
>>1041782
ух ваще! спасибо. вот тока терь проблема. на моем проекте реакт, который пилится с 14 года, где про это даже не слыхали.

мне сходу выдало 1600+ ошибок. и как терь настроить на то, чтобы оно их игнорило пока я не скажу - хз.

очень странно, чо я только ща узнал про этот стаф
#405 #1042543
>>1042150
он не бесплатный, на работе мне бабла не дадут, а сам по себе я бомж, жлоб, ебал,
89 Кб, 696x686
#406 #1042544
Обожаю реакт.
#407 #1042551
Ребята, жс это не с++, на нем реально легко писать. Даже думать особо не надо. Есть заковыристые вещи, но сейчас ведь один реакт, можно правой пяткой набирать код и будет все ровненько.
#408 #1042552
>>1042413
Но 50к в год это около 4к$, с вычетом налогов+оплатой жилья много ли остаётся? Зарплата среднего врача или фризеровщика. 70к$+ уже более менее хорошая зп чтобы жить в крупном городе.
#409 #1042553
>>1042544
о, кстати, хороший вопрос: как гулять по стеку в рамках VSCode с учетом разбивки модулей, так чтобы стек движка не был настолько подробный? чтобы если что-то падало, небыло бы видно стека из минифицированного реакта? как в любом нормальном языке
#410 #1042554
>>1042551

>легко писать


>думать не надо


>можно правой пяткой набирать


КАК ЖЕ Я НЕНАВЖУ JS
#411 #1042557
>>1042551

>сейчас ведь один реакт


ангулар не осилил? тайпскрипт сложно дохуя?
#412 #1042577
>>1042557

> ангулар не осилил? тайпскрипт сложно дохуя?


Что там осиливать?)) Ты правда считает что осилить жс фреймворк это какой то подвиг?
#413 #1042589
сап сеньеры, через пару месяцев собес в <epam/> кто нить в курсе насколько жестко, вот думаю отказаться от их предложения прийти пообщаться т.к. кажется что не вывезу. могу попросить написать через год, а за это время sicp'ом и гоф'ом измазаться
#414 #1042601
>>1042589
поешь? танцуешь? играешь на кожанном инструменте?

ты подумай, какие у тебя есть таланты или спроси у своего талант менеджера
#415 #1042652
>>1042577

>Ты правда считает что осилить жс фреймворк это какой то подвиг?


Как видно по моему опыту, второй некоторые таки не осиливают.
#416 #1042688
>>1042589

> отказаться от их предложения прийти пообщаться т.к. кажется что не вывезу


Совсем дебич?

> sicp'ом и гоф'ом измазаться


Ебать ты долбоёб, земля тебе пухом, братишка
#417 #1042691
>>1042415
Блять ну не знаю, я получаю 24к бачей по текущему курсу и это считается нормальная мидловая зп в ДС. Джунов беру на почти в 2 раза меньше.
#418 #1042692
>>1042460

> на ремоуте кому-то втюхаться


> ремоут


НЕВОЗМОЖНО
Е
В
О
З
М
О
Ж
Н
О
#419 #1042698
>>1042691
Это после налогов. Накининь хотя бы и 13%, а лучше все 50, которые платит твой работодатель.
#420 #1042714
>>1042544
propTypes?
#421 #1042733
>>1042652
тайпскрипт?
а что там осиливать, микрософт дебики решили запилить классы и прочий ооп.
И все бы ничего, но компания эта уже себя показала и я бы побоялся использовать их говно в продакшене.
#422 #1042753
>>1042544
что такое source maps
#423 #1042766
>>1042543
ты и так уже зашкварен об фейсбук. еще и об индусофт зашквариваешься. а по поводу платный - да он 8 ебаных бачей стоит в мес, бомж ты блять. 8 бачей стоят пять минут работы любого бомжа. все работает из коробки без ебли с говноплагинами которые накостыляли другие бомжи из опенсорс "коммунити" и быстрее чем хромоговно. пропусти один смузи и купи себе иде и работай как профессионал а не ссаный хоббиист. используй продвинутые тулзы, не молоток ебаный с гвоздями
#424 #1042824
>>1042589
да не, я понимаю что оно не особо в работе нужно около 3х лет на реакте верстаю да на буцтрапе программирую прост. и так не особо комфортно на собеседованиях себя чувствую, а если поднажмут, могу и на тупой хуйне как дите облажаться
#425 #1042825
#426 #1042855
>>1042753
Хуйяйпс. Это create-react-app, сурсмапы там есть.
#427 #1042921
Буду учить ангуляр 2.0, какие подводные?
#428 #1042922
>>1042921
Начнешь говорить странными словами и срать под себя.
#429 #1042924
>>1042922

>странными словами


жяваскрипт не говно

>срать под себя


чек.
#430 #1042926
>>1042924

>жяваскрипт не говно


Говно говняное, но скоро исправят http://www.mono-project.com/news/2017/08/09/hello-webassembly/
#431 #1042931
пойду к вам джуном на удаленку 23$\месяц
animenarutofanatuzumaki5vgnarutoANUSmaQuMilPUNCTUMr^l,u
я не тролль
#432 #1042933
>>1042931
У меня так фронтендщик умер
#433 #1042935
>>1042933
не понял
#434 #1042936
Вопрос про firefox developer tools.
Есть ли какой-нибудь способ сделать разбивку исходников в firefox devtools по папкам? Сейчас это выглядит как список всех js файлов, которые были загружены. А если используется, к примеру webpack, который генерирует sourcemap, то в devtools список всех модулей, которые были сгенерированы. Это крайне неудобно, можно сделать как в Chrome?
Использую Chrome давно, но хотелось бы получить какой-нибудь user experience от firefox, пока что на мой взгляд вообще не юзабельно для разработки. Возможно я просто что-то делаю не так. Firebug не предлагать, так как он уже вроде как устарел и не обновляется.
#435 #1042937
>>1042921
Typescript тоже придется выучить. От него двоякое впечатление, кто-то от него радугой блюет, а кто-то как я, не оценил его возможностей.
#436 #1042938
>>1042937
Он не нужен
#437 #1042940
>>1042553
При чем тут VS Code? Тут в браузере упало. Если надо отлаживать под VS Code наверняка есть какие-то дополнения для него, хотя я хз вообще как ты это делаешь и зачем. Стек всегда полный, показывает трейс от и до все точки во всех функциях, через которые прошел упавший синхронный (а со специальным включенным параметром в Chrome и асинхронный) вызов функции. В любом нормальном языке список такой же. Не знаю считаешь ли ты Java нормальным языком, но там еще пизже показан трейс из вложений хуевой тучи абстракций, есть даже картинка как это все там выглядит, но искать я ее не буду.
#438 #1042941
>>1042938
Для разработки под второй ангуляр он таки да, не обязателен. Но это тоже самое что писать под React с использованием одного только JS без JSX, то есть крайне неудобно. Хотя в целом соглашусь наверное, ошибки типизации идут от кривизны рук и отсутствия соглашений.
#439 #1042943
кто-нибудь использует только ванильный js и css?
#440 #1042964
>>1042943
Я использую. Уже 15 лет как.
#441 #1042972
>>1042964
я имею в виду без фреймворков вообще
куда ни посмотрю везде реакт\ангулар\жквере\нодежс
#442 #1042977
>>1042972
Я же написал. 15 лет уже пишу.
Аnode.js это не фреймворк, а рантайм.
#443 #1043000
>>1042977

>не фреймворк, а рантайм


Не программист, а говноед
#444 #1043024
>>1042733

>компания эта уже себя показала


MS в плане исследований и новый направлений всегда хороши, а их технологии живут благодаря долгой поддержке. По сравнению с гуглом, это хорошие вещи.
#445 #1043026
>>1042943
Зачем заново изобретать велосипед? Ты ведь сам придешь со временем к какому-нибудь простому фреймворку типо backbone/react чтобы снизить число копипастного кода.
#446 #1043029
>>1043026
Двачую, переехал из Джавы, тут же уебался об ваше ебучее прототипное наследование, невозможность типизировать данные. Пару недель назад узнал про React и моя жизнь изменилась. Охуенная штука, зависимость есть. А еще и РЕДАКС!
#447 #1043035
>>1042931
Линк на гитхаб давай.
#448 #1043036
>>1043029
Пока не поздно посмотри на elm purescript ты все равно не осилишь, ибо жабомакака, редакс так вообще по сути под копирку с elm arch сделали
#449 #1043044
>>1043035
гитхаба нет линка тоже
скажи что сделать сделаю
#450 #1043045
>>1043044
Хули ты хочешь? Без своего кода просишься на удаленку. Кто тебя заочно возьмет так?
Портфолио набирай.
#451 #1043046
>>1043044
Хороший план Мойша. Школьники на fl.ru ждут твоих предложений
#452 #1043048
>>1043044
1) Делаешь аккаунт на гитхабе.
2) Берешь create-react-app
3) Делаешь калькулятор займов: два селектора (придумай опции сам), поле для ввода суммы, выбор срока, ридонли поле с результатом (формулу придумай сам)
4) Заливаешь полученный результат на жидхаб (если осилишь gh-pages, +бал)
#453 #1043049
>>1043048
Бля, ну я такую хуйню для своих группашей платно на 1 курсе делал. Дай ему что-то посерьезнее.
#454 #1043053
>>1043048
а куда кидать ето
#455 #1043055
>>1043049
>>1043053
Ты же не хочешь, чтобы он убежал в слезах смотреть аниме дальше?
#456 #1043062
Ребята, дам вам совет. Бросайте жс, начните учить что нибудь серьезное, типо java, c++, c#.
Ищите работу с ними джуноми за еду, потом фриланс. Хороший с++ фрилансер получает 4-5к долларов в месяц.
#457 #1043064
>>1043048
А что можно осиливать в гитхаб пейджес, это же просто галочку в настройках репозитория поставить
#458 #1043067
>>1043064
А теперь вспомни себя в тот день, когда "контроль версий" для тебя не значил ничего.
#459 #1043070
>>1043067
Лол, я за 4 года работы в комманде сабмодулями и ребейзом пользоваться не научился.
#460 #1043072
Я дико извиняюсь за ультра-нубский вопрос, но блять где вы, жс-пидорыгоспода проверяете свою писанину?
То есть вот я, свой богоподбный пистоновый код открываю в терминалецмд интерпретатором питона. Но что делать с жаба скриптом - ума не приложу.
#461 #1043074
>>1043072
f12
node cli
4 Мб, webm, 352x240, 0:24
#462 #1043075
Здарова, бандиты. Мне нужно запилить простенький сервис, который должен будт регистрировать аккаунт для пользователя, принимать от него данные и обрабатывать их. В интерфейсе нужны кнопки и карусельки, типа как у впаше при просмотре изображений. Я ничего особенно не знаю, кроме пистона, ну и по мелочи хтмл/цсс тащемта могу наверстать это быстро
Знающий анон, скажи, что мне понадобится для реализации этой ебатеки? Джанга, фласк? А может лучше НАСТЯ вообще что-то другое начать учить, типа джава скрипт или еще какой хуйни. Я вообще не не шарю в вебе.
#463 #1043080
>>1043072
Алсо как делают жскрипт, который сработает если закинуть его в адресную строку браузера?
Делал свое говно даже в одну строку, все равно не пашет. открывается гогольсерч который показывает результаты поиска по моему говнокоду, лол
#464 #1043088
>>1043072
Все питонщики такие мудаки и не умеют пользоваться браузерами?
#465 #1043090
>>1043088
Я не питонщик, приятель. Я хэлловорлдщик.
#466 #1043094
>>1043090
В любом современном, не маргинальном браузере, есть консоль. Открывается по f12. Если тебе нужно окружение браузера.

Тобой описанный питоновский REPL, есть точно так же в ноде, если тебе нужно окружение ноды. Просто запускаешь ноду в своем терминале, точно так же как и питон, и вот тебе твой REPL.

Про вопрос с кодом в адресной строке, есть такая URL-схема, как javascript.
example

>javascript:alert('тыхуйбля')

#467 #1043096
>>1043094

>javascript:alert('тыхуйбля')


имей ввиду, что, например хром (как остальные не знаю), не даст тебе просто так взять и скопипастить это в адресную строку. Поэтому схему писать надо ручками.
#468 #1043123
>>1043072
NodeJS поставь и хеллоуворлдь
app.js:
console.log('Hello world!');

node app.js

Не слушай пидоров с их вонючими браузерками. Вебпараша нахуй не нужна.
#469 #1043128
>>1043123

> Вебпараша нахуй не нужна


Из 2007 капчуешь?
#470 #1043130
>>1043123

>Вебпараша нахуй не нужна


Что ты тогда в вебе сидишь, мудак? Иди нахуй на улицу гулять.
#471 #1043131
>>1043128
>>1043130
Смотрите-ка как мощно вебдауны рвутся. Неспособны осилить ничего, кроме своей реакт-хуякт-вебпараши, оценить жс в разрезе дизайна ЯП, только и могут, что полыхать, лол.
#472 #1043139
>>1043131

>Неспособны осилить ничего


Ты прекрати делать подобные выводы о людях, основываясь на собственной компетенции.
#473 #1043188
>>1043131
С чем будем сравнивать?
#474 #1043191
>>1043188
Тебе, очевидно, не с чем сравнивать.
#475 #1043199
>>1043062

>серьезное,


>типо java, c++, c#


Конпилируемые параши с обязательными паблик-статик-фабриками-синглтонов, чтоб макаки не охуевали в кандалах. Из-под барского сапога писать — это тебе не массив с числом складывать в рантайме и получится строка, какие уж тут шутки. Барин хороший, барину видней.

>>1043131

>оценить жс в разрезе дизайна ЯП


Ну дык попробуй оценить, конпилятор ты окаменелый, дизайн языка, который может произвольно выполняться из произвольного источника на клиенте и никого не убить при этом. Да ещё чтоб он был при таких рисках настолько простой, что был бы доступен любому автору, решившему наполнять Веб и складывать массив с числом для решения бизнес-задач, а не только элитному отборному байтоёбу без жизни, зато с охуенными познаниями в дизайне языков, о которых всем нужно рассказать и детектировать бутхурт, пытаясь спрятаться в строгоконпилируем скорлупке от реального мира и своего в нём места.
33 Кб, 380x440
#476 #1043205
>>1043048
зашел на fl.ru там отзыв от 299 р оставить можно
https://www.fl.ru/projects/3371248/kalkulyator-rascheta-na-sayt.html#hiddenOfferInfo
получилось:
https://besplatniuidnusskiuhost.000webhostapp.com/
https://github.com/o78/1/blob/master/fl.html
до этого делал еще один калькулятор на пхп и мскл и линкатер
потихоньку в реакт вкатываюсь
гит прекольный кстати его через командную строку там делать нужно я на гентоо сижу мне так даже удобнее
48 Кб, 801x783
#477 #1043224
Не понимаю, помогите. Как в данном случае вообще работает возвращаемый объект?

1.У него нет названия, он не сохранен ни в какую пеерменную или свойство внешней функции. Это вообще роли не играет?

2. Почему методы этого объекта считаются методами внешней функции? С какой радости мы имеем право писать вот это counter.getNext() и даже получать вменяемый результат? В моем понимании эти методы относятся к обозначенному "анонимному", хз как его еще назвать, объекту. Или return их присваивает внешней функции?
#478 #1043225
>>1043224
ооп головного мозга?

У тебя есть объект, часть полей которого являются методами. Да это анонимный объект. Нет не нужно объявлять класс для этого.
#479 #1043230
>>1043225

>ооп головного мозга?


Нет, я слишком нуб для такого, только начал учить. Что такое поля?
33 Кб, 500x508
#480 #1043236
>>1043230
Ну карочи объект это типа розеткус пикрелейтед.
У него есть поля (дырдочки). Поля могут быть разного типа, числа, строки, функции, другие объекты и т.п.
Можно на лету добавлять новые или удалять старые. Так и живем.
#481 #1043239
>>1043205
Ну так шо, ты согласен работать за 1.5к/месяц?
#482 #1043242
>>1043236
А-а-а, понял, спасибо.
#483 #1043247
>>1043224

>Это вообще роли не играет?


Нет, важно то, что этот объект доступен для обращения через переменную counter.

>Почему методы этого объекта считаются методами внешней функции?


Методы возвращенного объекта не считаются методами "внешней" функции. Функция просто возвращает объект с такими полями "методами". Она точно так же могла возвращать любое другое значение, строку, число, что угодно еще. Самой функции от этого не тепло не холодно.

>С какой радости мы имеем право писать вот это counter.getNext()


Мы имеем на это право после того, как определили такое поле в возвращенном объекте. counter же и есть тот самый возвращаемый объект.

>даже получать вменяемый результат


Этот пример написан, чтобы продемонстрировать как работают скоупы. Благодаря этому механизму и получается вменяемый результат. Вызов функции makeCounter создает контекст ее выполнения. В нем объявляется и инициализируется переменная currentCount. В ней же при каждом вызове создается и возвращается новый объект, который мы в дальнейшем используем как counter. Поскольку и переменная currentCount и возвращаемый объект были созданы в одном контексте, методы возвращаемого объекта могут обращаться к этой переменной. Это как если бы возвращаемый объект "захватил" контекст вызова функции в котором он был создан и продолжал его "удерживать" пока существует сам. Так переменная currentCounter связывается с возвращаемым объектом.
#484 #1043250
>>1043247
Спасибо за подробности, анончик, я чувствую что сейчас ебанусь. Надо сделать перерыв...
#486 #1043295
>>1043247
Я снова тот анон с вопросами, который теперь немного успокоился. В общем, все понятно, кроме того как... ммм... В общем, смотри, правильно ли я понял?

У нас есть функция. Если она ничего не возвращает, то она равна undefined. Но в нашем случае она возвращает объект, в котором есть методы. Это не значит, что эти методы теперь принадлежат внешней по отношению к данному объекту функции. НО! Как я понял, сам факт вызова этой функции возвращает этот объект и эээээтоооо... Это как будто мы просто вызвали объект? В смысле, если как если бы вообще никакой функции не было, а мы просто создали пустой объект и вызвали его, типа, покажи че там у тебя. Но поскольку объект не пуст, а с методами, мы можем и методы вызвать. А право писать counter.getNext() мы имеем потому, что counter.некий_метод это то же самое, что просто_объект_а_не_функция.некий_метод? Разница в том, что если бы мы просто создали объект, он не имел бы собственного лексического окружения и работал бы только с глобальными переменными, а если оформить через функцию, то переменную currentCount можно скрыть. Да? Я правильно понял?
#487 #1043299
>>1043295
Т.е. сам факт возврата объекта из функции означает, что при её вызове мы, по сути, работаем с этим самым объектом?

Надеюсь ты понимаешь суть вопроса, а то я могу как мудак спрашивать. Уточни если что.
#488 #1043300
Заставить бы вас всех уебков асм выучить, да разобраться как вообще компьютер устроен, чтобы вопросов тупых не задавали.
#489 #1043302
>>1043199

> Ну дык попробуй оценить


Детектор почини, дегенератина, жс один из моих любимых языков.
#490 #1043305
>>1043300
Я бы с радостью. Если покажешь где учить.
#491 #1043307
>>1043300
Жеэсеры только по видяхам учиться могут и только, если у препода розовые очки, зеленый галстук и ебанутая фиолетовая прическа.
#492 #1043308
>>1043239
С контрактом, трудовой и отчислениями в пенсионку. Возьмете на таких условиях джуном?
#494 #1043312
>>1043308
Ты про мрот слышал? Кому ты нужен, налогов столько за тебя платить.
#495 #1043317
>>1043299

>Т.е. сам факт возврата объекта из функции означает, что при её вызове мы, по сути, работаем с этим самым объектом?


Если я правильно понял твой вопрос, то не совсем так. Обрати внимание на
https://developer.mozilla.org/ru/docs/Web/JavaScript/Guide/Working_with_Objects

>Создание новых объектов


>Использование инициализаторов объекта


Запись вида {...} создает новый объект. Это значит что каждый раз, когда будет вызываться внешняя функция makeCounter, будет создаваться +1 новый объект и он будет возвращаться как результат выполнения. Главное здесь, что конструкция {...} создает каждый раз новый объект.

Он не будет привязан к внешней функции, по крайней мере пока ты сам это явно в коде не определишь, такая возможность потенциально есть. Но в коде на твоем скрине такого нет.

В этом примере в самом деле нет ничего особенного просто функция возвращает просто значение. Она так написана, что это значение является создаваемым внутри функции объектом, но оно опять же могло быть чем угодно. То, что делает этот пример примечательным, это использование скоупа для "хранения" переменной currentCount.
Довольно часто можно увидеть такой прием на практике. Например, модный молодежный redux через это работает.
https://github.com/reactjs/redux/blob/master/src/createStore.js#L247
Для понимания нужно просто разделять саму функцию как набор инструкций для совершения каких-либо действий и контекст ее выполнения. Контекст создается каждый раз, когда функция вызывается, внутри этого контекста каждый раз инициируется переменная currentCount и там же создается новый возвращаемый объект.
Опять же поскольку и переменная и объект разделяют в этом момент один контекст, "методы" объекта могут обращаться к переменной currentCount.

Если ты что-то другое имел в виду, то уточни, пожалуйста.
#496 #1043322
>>1043224
return и в африке return. просто то, что возращает функция. выглядит некрасиво все же
#497 #1043325
>>1043224
хотя интересно, что без ретерн эта хрень не работает Эврика! Так вот как делается ооп в жс. надо просто ретерн со скобочками перед методами ставить. ну спасибо что научил
#498 #1043329
>>1043322

> return и в африке return.


> ограниченное мышление


https://www.haskell.org/hoogle/?hoogle=return
#499 #1043385
Сап братва, у меня тут хуй застрял между зубами, никак снять не могу, помогите плиз.
изучаю нод джс, а точнее адаптер монгоосе. Так вот, есть у меня некая схема https://pastebin.com/6yVUtj2j , мне вот что интересно, вот есть допустим интерфейс, в котором есть поле для ввода, и я хочу, чтоб сабмит этого поля добавлялся в массив по ключу ebaliMamkuOdmena в виде объекта
{_id: id,
body: text,
timestamp: new Date(),
ktoEbal: userName}

прочитал документацию, но никак не смог понять как это среализовать, помогите плиз
#500 #1043389
>>1043322

>2017


>возвращать объекты из функций вместо божественных Promise-ов

#501 #1043400
Устроим перепись долбоебов? Кто из вас без подглядывания в гугл знает что такое TLB?
#502 #1043411
>>1043400

>TLB


умник блять нашелся
#503 #1043418
>>1043389

>2017


>использовать промизы вместо async/await

#504 #1043421
>>1043418
А это не одна хуйня?

мимо-диезо-господин-с-async/await-Task<>-Cancellation-уже-лет-7-как
#505 #1043424
>>1043418

>2007


фикс
#506 #1043425
>>1043224

>1.У него нет названия, он не сохранен ни в какую пеерменную или свойство внешней функции. Это вообще роли не играет?


Название есть у переменной, объект это СОДЕРЖИМОЕ этой переменной. Точно такое же, как 123 или "Hello world!", например.

> 2. Почему методы этого объекта считаются методами внешней функции? С какой радости мы имеем право писать вот это counter.getNext() и даже получать вменяемый результат? В моем понимании эти методы относятся к обозначенному "анонимному", хз как его еще назвать, объекту. Или return их присваивает внешней функции?


У тебя counter - это переменная, в которой хранится ссылка на объект. Запись counter.getNext() означает:
1) получить объект, который хранится в переменной counter;
2) вызвать метод (поле-функцию) getNext() у этого объекта.
#507 #1043432
>>1043421
Пользуясь аналогиями, промизы - это GOTO, async/await - это циклы WHILE и FOR. Хотя работает одинаково, но второй вариант читабельнее.
#508 #1043438
>>1043432
Какая-то хуевая аналогия, цикл на goto почти так же читается, в некоторых языках вообще рекурсия вместо циклов и ничо. А вот continuations с запоминанием и возвращением в контекст нихуя блять не делаются в принципе, если язык их не поддерживает. Только коллбек хелл.
#509 #1043439
>>1043317

Да, я другое имел в виду. Сначала скажу предысторию.

Я начал сначала учить верстку, хтмл/цсс, сверстал свой сайтик и тд, понял что этого мало и решил учить джаваскрипт. Т.е. программирование для меня - это нечто новое, и все что я знаю из айти на сегодня - это хтмл/цсс. Наверное, ты тоже знаешь цсс? Если да, тебе знакома такая вещь как селектор с некоторой вложенностью. Например, есть такой код хтмл:

<div class="blabla_1">
<div class="ololo">
<div></div>
</div>
<div class="ololo"></div>
<div class="ololo"></div>
</div>

У нас есть один большой блок с неким классом, внутри него - еще какие-то блоки с другим одинаковым классом и в первом из этих вложенных блоков есть еще один - вложенный, без класса. Мы можем найти его в цсс таким селектором и задать цвет шрифта:

.blabla_1 .ololo div {
color: green;
}

Очевидно: в элементе с классом .blabla_1 лежит элемент с классом ololo в котором лежит некий блок div.

Вот это то к чему я привык. И сейчас я вижу функцию, в которой есть объект с методами, но это выглядит так будто мы вызываем методы, которые принадлежат функции как объекту, т.е. в моей голове ломается условный "селектор". Вот что должно было быть написано, что бы запись counter.getNext() не сломала мне мозг:

var currentCount = 1;

var counter = {

getNext: function() {
return currentCount++;
},

set: function(value) {
currentCount = value;
},

reset: function() {
currentCount = 1;
}
} //просто объект с методами

//ИЛИ

function makeCounter() {
var currentCount = 1;
}

makeCounter.getNext = function() {
return currentCount++;
};

makeCounter.set = function(value) {
currentCount = value;
};

makeCounter.reset = function() function() {
currentCount = 1;
};
//Мы записали в функцию методы как в объект и они теперь принадлежат ей.

В таком случае все ясно если думать как врестальщик: есть объект counter? Есть. Пишем селектор: counter. В нем есть метод? Есть. Вложенность - через точку, пишем: counter.getNext()
Держим в уме, что этот метод может вызваться только в этом объекте, т.е. селектор обладает ооооочень высокой специфичностью. И тут ВНЕЗАПНО мы делаем анонимный объект, пишем "селектор" через функцию и все это как-то работает! КАКОГО ХУЯ!!!!!!!!!!!!!!!!!!!!!!!!!

Вот я и пытаюсь понять, в какой момент мы подменили объект на функцию. Как я понял, и понял, скорее всего, неправильно, это то что return внутри функции логически "вытягивает" содержимое объекта и ложит непосредственно в функцию и даже начинает её объектом_Васей, а не функцией_Сирожей.

Ты не мог бы шаг за шагом расписать что происходит при написании этой херни и в момент вызова? Просто чтоб я один раз увидел. Я знаю, что уже всех заебал, но правда хочу понять что происходит
#509 #1043439
>>1043317

Да, я другое имел в виду. Сначала скажу предысторию.

Я начал сначала учить верстку, хтмл/цсс, сверстал свой сайтик и тд, понял что этого мало и решил учить джаваскрипт. Т.е. программирование для меня - это нечто новое, и все что я знаю из айти на сегодня - это хтмл/цсс. Наверное, ты тоже знаешь цсс? Если да, тебе знакома такая вещь как селектор с некоторой вложенностью. Например, есть такой код хтмл:

<div class="blabla_1">
<div class="ololo">
<div></div>
</div>
<div class="ololo"></div>
<div class="ololo"></div>
</div>

У нас есть один большой блок с неким классом, внутри него - еще какие-то блоки с другим одинаковым классом и в первом из этих вложенных блоков есть еще один - вложенный, без класса. Мы можем найти его в цсс таким селектором и задать цвет шрифта:

.blabla_1 .ololo div {
color: green;
}

Очевидно: в элементе с классом .blabla_1 лежит элемент с классом ololo в котором лежит некий блок div.

Вот это то к чему я привык. И сейчас я вижу функцию, в которой есть объект с методами, но это выглядит так будто мы вызываем методы, которые принадлежат функции как объекту, т.е. в моей голове ломается условный "селектор". Вот что должно было быть написано, что бы запись counter.getNext() не сломала мне мозг:

var currentCount = 1;

var counter = {

getNext: function() {
return currentCount++;
},

set: function(value) {
currentCount = value;
},

reset: function() {
currentCount = 1;
}
} //просто объект с методами

//ИЛИ

function makeCounter() {
var currentCount = 1;
}

makeCounter.getNext = function() {
return currentCount++;
};

makeCounter.set = function(value) {
currentCount = value;
};

makeCounter.reset = function() function() {
currentCount = 1;
};
//Мы записали в функцию методы как в объект и они теперь принадлежат ей.

В таком случае все ясно если думать как врестальщик: есть объект counter? Есть. Пишем селектор: counter. В нем есть метод? Есть. Вложенность - через точку, пишем: counter.getNext()
Держим в уме, что этот метод может вызваться только в этом объекте, т.е. селектор обладает ооооочень высокой специфичностью. И тут ВНЕЗАПНО мы делаем анонимный объект, пишем "селектор" через функцию и все это как-то работает! КАКОГО ХУЯ!!!!!!!!!!!!!!!!!!!!!!!!!

Вот я и пытаюсь понять, в какой момент мы подменили объект на функцию. Как я понял, и понял, скорее всего, неправильно, это то что return внутри функции логически "вытягивает" содержимое объекта и ложит непосредственно в функцию и даже начинает её объектом_Васей, а не функцией_Сирожей.

Ты не мог бы шаг за шагом расписать что происходит при написании этой херни и в момент вызова? Просто чтоб я один раз увидел. Я знаю, что уже всех заебал, но правда хочу понять что происходит
#510 #1043449
>>1043425

>Название есть у переменной, объект это СОДЕРЖИМОЕ этой переменной. Точно такое же, как 123 или "Hello world!", например.



Но ведь мы можем туда вписать десяток таких объектов без имен. Как оно поймет, который именно мы имеем в виду?

>counter - это переменная, в которой хранится ссылка на объект



Тот же вопрос. С точки зрения css такой селектор не может работать т.к. выдаст слишком много результатов, т.е. он недостаточно специфичный. Вот это я написал>>1043439
#511 #1043450
Если у вас есть еще настроение мне это объяснять, пишите, я обязательно прочитаю. Пока потихоньку буду раздуплять статью про работу с объектами на сайте Мозиллы и потом спать. Я реально тупой сейчас и плохо соображаю, но есть мотивация на это потратить столько времени, сколько нужно, пока не пойму. Подписался на тред, что называется.
#512 #1043452
>>1043439
Ты про замыкания вообще читал?
#513 #1043459
>>1043312
А нахуй ты с такой работой нужны, которую никуда не запишешь?
#514 #1043461
>>1043452
Читал.
#515 #1043462
>>1043459
Пиши в резюме что хочешь, никто не проверяет.
#516 #1043463
>>1043452
Вот что такое замыкание по версии сайта лерн джаваскрипт:

>Замыкание – это функция вместе со всеми внешними переменными, которые ей доступны.



ВНЕШНИМИ, ты понял? А я не понимаю кка работает внутренняя единица, в данном случае объект внутри функции.
#517 #1043465
Я знаю про то что сначала ищутся переменные во внутреннем лексическом окружении, если нет такой - на уровень выше, там нет - еще выше пока не найдет или не найдет и даст ошибку.
#518 #1043466
>>1043463
>>1043465
Йобаный свет, да почитай ты уже как машина ирл вызов процедур выполняет, с аргументами на стеке, вот это все. Пиздец какой-то.
#519 #1043467
>>1043462
Хорошо.
В таком случае вопрос остается таким же. Зачем тратить время на компанию, которая платит гроши, официально ты в ней не значишься, когда в резюме можно писать что угодно?
Не проще ли перепрыгнуть этап с дешевой компанией и сразу искать нормальную?
#520 #1043468
>>1043466
Успокойся. Выпей водички. Я уже сказал, что прочту статью.
#521 #1043470
>>1043439
Я кажется понимаю, что ты имел в виду. Проблема в том, что css и js принципиально разные типы языков. Я не на столько силен в формальных формулировках, кто знает лучше, пусть поправит. Css то, что называют декларативным языком, js императивным.
Работая над css ты задаешь набор правил, что должно быть на странице описывается селектором и как оно должно выглядеть стилями. При этом не обязательно на странице будут элементы, которые соответствуют всем селекторам в твоих таблицах стилей. Элементы могут динамически появляться и исчезать, но это не важно, потому что таблица стилей описывает набор правил по которым нужно находить элементы и применять к ним стили, а не состояние страницы.

Императивные языки нужно читать иначе, они описывают поэтапное решение проблемы шаг за шагом. Если таблицу стилей можно начать читать с любого места, может не всегда это будет удобно, но так или иначе можно в конце концов получить всю необходимую информацию, то чтобы понять код на императивном языке нужно проследить последовательное выполнение инструкций от начала до конца. А поскольку сферическое в вакууме выполнение инструкций смысла имеет немного, нужно еще отследить, как изменяется состояние программы при помощи этих инструкций.
Выглядит это в твоем примере примерно так:
1. Объявляется функция с именем makeCounter. С помощью этого имени можно ее "вызвать" то есть попросить js выполнить набор инструкций, описанных внутри этой функции в соответствии с правилами языка. На самом деле можно сделать еще много разных вещей, но сейчас это не важно.
2. Когда функция будет вызвана с этой строки начнется ее работа. Здесь объявляется переменная currentCount и ей присваивается значение 1. Это будет происходить каждый раз, когда будет вызваться функция. 1, 10 или 1 000 000 раз, не важно.
4. Используется оператор return. В момент выполнения функция возвращает значение, которое идет следом. Еще здесь используется {, начало конструкции, создающей новый объект. Это значит, что результатом работы функции будет созданный с помощью конструкции {...} новый объект.
5. В объекте определяется поле getNext, оно ссылается на функцию, которая будет вызываться при обращении к этому полю.
6. Тот же оператор return. В этот раз он будет возвращать значение переменной currentCount. Доступ к значению currentCount имеется благодаря правилу работы областей видимости переменных.
То же самое и для остальных полей возвращаемого объекта.

19. Отсюда начинается выполнение программы на скрине. Это первая инструкция в цепочке от начала до результата. здесь переменной counter присваивается значение, возвращаемое функцией makeCounter. makeCounter возвращает то, что определено при помощи оператора return(4), то есть новосозданный объект. В момент вызова makeCounter() контекст выполнения программы, то есть цепочка инструкций, переходит во внутрь функции makeCounter, то есть будут выполнены строки 2-16. После достижения оператора return контекст выполнения возвращается на строку 19, где переменной counter присваивается возвращенное функцией значение.
21. Выводится алерт с текстовым значением, возвращаемым getNext. Вернет оно то, что определено в операторе return, то есть значение currentCounter. Попутно currentCounter увеличивается на единицу.
22. Повторяется то же самое.
... дальше в принципе опять то же самое, за исключением того, что обращаются еще и к другому полю объекта.

Короче, программу на js нужно читать от начала до конца, отслеживая куда заведет нить выполнения инструкций и как выполнение каждой инструкции изменит состояние программы, значение переменных или, например, состояние браузера. И когда ты хочешь обратиться к чему-либо в программе ты должен убедиться, что это позволяет текущее состояние программы, например, что функция объявлена, а у объекта есть требуемое тебе свойство.
#521 #1043470
>>1043439
Я кажется понимаю, что ты имел в виду. Проблема в том, что css и js принципиально разные типы языков. Я не на столько силен в формальных формулировках, кто знает лучше, пусть поправит. Css то, что называют декларативным языком, js императивным.
Работая над css ты задаешь набор правил, что должно быть на странице описывается селектором и как оно должно выглядеть стилями. При этом не обязательно на странице будут элементы, которые соответствуют всем селекторам в твоих таблицах стилей. Элементы могут динамически появляться и исчезать, но это не важно, потому что таблица стилей описывает набор правил по которым нужно находить элементы и применять к ним стили, а не состояние страницы.

Императивные языки нужно читать иначе, они описывают поэтапное решение проблемы шаг за шагом. Если таблицу стилей можно начать читать с любого места, может не всегда это будет удобно, но так или иначе можно в конце концов получить всю необходимую информацию, то чтобы понять код на императивном языке нужно проследить последовательное выполнение инструкций от начала до конца. А поскольку сферическое в вакууме выполнение инструкций смысла имеет немного, нужно еще отследить, как изменяется состояние программы при помощи этих инструкций.
Выглядит это в твоем примере примерно так:
1. Объявляется функция с именем makeCounter. С помощью этого имени можно ее "вызвать" то есть попросить js выполнить набор инструкций, описанных внутри этой функции в соответствии с правилами языка. На самом деле можно сделать еще много разных вещей, но сейчас это не важно.
2. Когда функция будет вызвана с этой строки начнется ее работа. Здесь объявляется переменная currentCount и ей присваивается значение 1. Это будет происходить каждый раз, когда будет вызваться функция. 1, 10 или 1 000 000 раз, не важно.
4. Используется оператор return. В момент выполнения функция возвращает значение, которое идет следом. Еще здесь используется {, начало конструкции, создающей новый объект. Это значит, что результатом работы функции будет созданный с помощью конструкции {...} новый объект.
5. В объекте определяется поле getNext, оно ссылается на функцию, которая будет вызываться при обращении к этому полю.
6. Тот же оператор return. В этот раз он будет возвращать значение переменной currentCount. Доступ к значению currentCount имеется благодаря правилу работы областей видимости переменных.
То же самое и для остальных полей возвращаемого объекта.

19. Отсюда начинается выполнение программы на скрине. Это первая инструкция в цепочке от начала до результата. здесь переменной counter присваивается значение, возвращаемое функцией makeCounter. makeCounter возвращает то, что определено при помощи оператора return(4), то есть новосозданный объект. В момент вызова makeCounter() контекст выполнения программы, то есть цепочка инструкций, переходит во внутрь функции makeCounter, то есть будут выполнены строки 2-16. После достижения оператора return контекст выполнения возвращается на строку 19, где переменной counter присваивается возвращенное функцией значение.
21. Выводится алерт с текстовым значением, возвращаемым getNext. Вернет оно то, что определено в операторе return, то есть значение currentCounter. Попутно currentCounter увеличивается на единицу.
22. Повторяется то же самое.
... дальше в принципе опять то же самое, за исключением того, что обращаются еще и к другому полю объекта.

Короче, программу на js нужно читать от начала до конца, отслеживая куда заведет нить выполнения инструкций и как выполнение каждой инструкции изменит состояние программы, значение переменных или, например, состояние браузера. И когда ты хочешь обратиться к чему-либо в программе ты должен убедиться, что это позволяет текущее состояние программы, например, что функция объявлена, а у объекта есть требуемое тебе свойство.
#522 #1043474
>>1043467
Какая кампания, маня? В кампании ты нахуй не кому не сдался. Я тебе по доброте душевной предлагаю упражняться за деньги, а ты выебываешься. Не хочешь, ну и сиди сычуй дальше, нахуй ты кому всрался.
#523 #1043486
А еще меня бесит, что по завершению выполнения каждой функции операции с DOM нельзя поставить другую функцию. Приходится timeout делать
#524 #1043489
скажите. мне на клиенте асинхронные функции и промизы надо использовать или это удел ноджсовцев-бэкендеров.
#525 #1043491
>>1043489
Только продолжения, только хардкор!
#526 #1043492
>>1043470
вот это простыня.
>>1043466
байтоеб порвался найс
#527 #1043493
>>1043489
При работе с аяксовыми запросами конечно же нужно.
#528 #1043505
>>1043449
Который вписали в текущий момент, очевидно же.
В CSS переменных нет, там селектор связывается с определенным элементом раз и навсегда, это константа.
#529 #1043506
>>1043449
Вообще, что бы не кукарекали байтоебы, на примере этого анона хорошо видно, почему императивные языки хуже и сложнее для понимания по сравнению с функциональными, не имеющими изменяемых данных.
Пора выкинуть JavaScript на помойку, заменив его на PureScript.
#530 #1043524
>>1043239
да офк
#531 #1043525
>>1043524
>>1043239
куда писать?
#532 #1043548
>>1043486
открой для себя dom mutation events
#533 #1043549
>>1043505

>В CSS переменных нет


Как там в 2008ом?
#534 #1043555
>>1043506
Если человек не в состоянии осилить как работают переменные и что такое стек, то от монад у него чердак поедет.
#535 #1043563
Блять не могу у Кантора понять строку в уроке.
Решение заключается в превращении obj.className в массив при помощи split. После этого в нем можно проверить наличие класса, и если нет – добавить.

сама строка:
var classes = obj.className ? obj.className.split(' ') : [];

што блять? тут же нет условия, что бы делать или-или. Ну похуй, перепишем в if.

if (var classes = obj.className) {
obj.className.split(' ')
} else [] /////што блять?

Как это работает? Пардон я тупой просто
Сам урок, первая задача
https://learn.javascript.ru/array-methods
#536 #1043564
>>1043555
Двачую этого.
79 Кб, 487x380
#537 #1043565
#538 #1043568
>>1043563
иди на завод долбаеб
#539 #1043573
>>1043474
если что это писал какой-то другой не понятно почему и для чего выползщий анон, лол
animenarutsYpofanatuzumakinarutoANUSmacv~ilPUNCTUMrsP(u
#540 #1043699
>>1043470

Огромное спасибо, анончик! Теперь все ясно окончательно, правда. Конечно, статью я тоже буду читать. Теперь я немножко менее дебил, благодаря твоим стараниям.
53 Кб, 535x528
#541 #1043732
>>1043308
теперь мне этот анон не отвечает и на мыло так и не написал все из-за тебя теперь точно поеду в польшу туалеты мыть ты доволен???
#542 #1043771
>>1043732
Я нихуя не понял.
Вот это >>1043205 твоё?
#543 #1043776
>>1043771
мое
за 1.5к готов 24\7 дрочить че угодно только не связанное с сексом плиз
#544 #1043777
>>1043776
Верстать умеешь? flexbox понимаешь?
404 Кб, 1239x496
#545 #1043783
Бамп отсосу хипстоблядей.
#546 #1043785
>>1043777
умею но опыта почти нет
в ццс что такое флексбокс знаю
с колонами верстал только на бутстрапе
#547 #1043793
>>1043785
Отписал тебе за щеку, проверяй.
#548 #1043935
Ньюфаг в Nodejs в треде
Как отрубить выдачу ошибок в теле ответа? Использую экспресс+монгуз, и если, к примеру, пытаюсь кастануть к ObjectId неподходящую строку, то он вываливает в респонс следующую строку:
CastError: Cast to ObjectId failed for value "WRONGOBJECTID" at path "_id" for model "MyModel"
Не знаю, экспресс ли это так или монгуз ругается, но отрубить надо.
#549 #1043939
>>1043935
Ну так обрабатывай эту ошибку в месте её возникновения как тебе нужно, а не пробрасывай дальше.
6 Кб, 447x92
#550 #1043942
>>1043939
Как? Обращение к БД у меня внутри middleware, пикрил.
Оборачивание в try не помогло, замена next(err) на просто next() тоже.
#551 #1043946
>>1043942
>>1043939
Окей, заменил next(err) на res.send(""), стало лучше. Но как-то в целом можно отключить вывод ошибки прямо в респонс? Запилить еще один мидлвейр в конец, который при наличии ошибок в предыдущих выдает 500?
#552 #1043952
>>1043946
У тебя один общий обработчик ошибок, который и отправляет ошибку в теле ответа. В нем и допиши отдельную обработку CastError, к примеру, вместо её отправки.
#553 #1043962
>>1043952
Ага, разобрался с этим теперь, благодарю.
#554 #1043977
>>1043563

>var classes = obj.className ? obj.className.split(' ') : [];



Это тернарное условие.
Оно эквивалентно

>var classes;


>if (obj.className) {


>....classes = obj.className.split(' ')


>} else {


>....classes = [];



Говном тебя облили заслужено. Как ты добрался до методов массива, ловко пропустив описание литерала этих самых массивов, ветвлений и в том числе этот самый тернарный оператор - не ясно. Ясно лишь то, что ты все делаешь не так. И либо мудак, либо слишком сильно в себе уверен, что равносильно тому же самому.
Начни сначала.
Обновить тред
Двач.hk не отвечает.
Вы видите копию треда, сохраненную 2 сентября 2017 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски