Шпаргалка по JavaScript для всех бэкэндеров
Часто встречаю странное пренебрежение, а иногда даже и отвращение со стороны backend разработчиков к JavaScript.
И, зачастую, это самое «фу, фронтенд» связано с «детской травмой» вида: попробовал -> столкнулся с особенностями языка -> фи какая гадость этот ваш JS.
Вторая категория - это люди, которым оно никогда и не нужно было, и ни разу с этим не сталкивались. Заметил, что в большинстве своем это Java, Python, Go разрабы.
По моему личному мнению каждый PHP разраб должен все-таки знать базовые конструкции и синтаксис. Я недавно столкнулся с таким лапшекодом на JS, что, похоже, его писал какой-то бэкэндщик, свято верящий, что for in - это PHPшный foreach, а local storage чистится после завершения сессии.
Пишите в комментарии свое мнение о том, нужно ли бэкэндеру уметь в JS, или нет?
А я напомню, что по-факту JS стал монополистом фронтенда.
Я собрал мини-шпаргалку по вопросам, часто возникающим у php разработчиков, пишущих JS код, тут:
Кавычки.
В js нет разницы между одинарными и двойными кавычками. Но появились еще и косые, но об этом - позже
Use Strict
Строгий режим. Объявляется в начале класса или функции. Бэкэндщику достаточно знать о том, что в этом режиме все незаданые переменные будут генерить ошибку.
Обход массивов, объектов
Сразу о главном - в JS, как и во многих других языках массив и ассоциативный массив (хэш таблица) - это разные типы. Ассоциативный массив мы можем представить в виде объекта.
Обращение к элементам массива, объекта
var - устарело
Для задания переменных нужно использовать let, для констант - const (А точнее - для неизменяемых переменных).
В чем разница?
this непостоянен!
Проблема последней строки - что мы просто передаем функцию без контекста (без объекта), т.е. в момент ее выполнения this будет пустым. this у нас есть только тогда, когда мы вызываем функцию "из объекта", т.е. через точку
Выход есть!
Контекст можно передать при помощи .bind(), добавленного к функции:
explode, implode, count()
in_array, strpos, count and strlen
str_replace, preg_replace
Конкатенация
Для конкатенации используется символ "+". Это приводит к некоторым казусам, например - вы по привычке пытаетесь сложить строку в которой число с числом:
Или, всеми любимая baNaNa:
Легальный пример:
А чтобы добиться того-же эффекта, который имеют двойные кавычки в PHP, нужно делать вот так:
Напоследок - точка с запятой необязательны в конце, но если вы пишете "непрофессиональный" JS, то это может сыграть злую шутку с кодом в дальнейшем, поэтому - лучше уж поставить.
Ну а для тех, кто хочет разобраться нормально, вот ссылочка на хороший туториал с примерами и объяснениями https://learn.javascript.ru/first-steps
А я веду Telegram-канал PHP.Today где публикую все самое важное о PHP и о смежных технологиях.