Три особенности javascript, о которых полезно знать каждому java/c-разработчику

Содержание:

Введение[править]

JavaScript (рус. джаваскрипт (яваскрипт — неправильное произношение)) является популярным языком программирования скриптов для веб-страниц и его поддерживает практически любой браузер. JavaScript добавляет интерактивность на веб-страницы.

Что даёт этот язык по сравнению с другими ?править

Вы можете использовать только те инструменты, которые уже есть на вашем компьютере, без необходимости загружать дополнительное программное обеспечение. JavaScript использует только компьютер пользователя и не использует ресурсы сервера. Иными словами, если программа JavaScript требует произведения расчетов, то компьютер пользователя это сделает.

1. Возможность создавать клиентские части веб-приложений

JavaScript не привязан к операционной системе, работая там, где запускается браузер, а практически любой современный браузер имеет его поддержку. К этому языку имеет самое непосредственное отношение модное слово
AJAX: именно JavaScipt позволяет делать быстро реагирующие интерфейсы.

2. Возможность исследования веб-приложений

JavaScript позволяет изучать работу веб-приложений, взаимодействовать с ними, модифицировать их поведение в браузере (с помощью системы расширений Firefox или скриптов Greasemonkey), обеспечивать их качество (с помощью Selenium, TestComplete и ряда других программных средств).

3. Применимость знаний при программировании на других языках программирования

Согласно Николасу Закасу объектная модель документа — часть JavaScript. А это самый распространённый способ обработки XML-документов. Помимо того, что методы, которые используются для изменения веб-страницы, вполне пригодны для работы с векторной графикой (SVG), математическими формулами (MathML), они ещё и в Java, Python, Ruby, PHP и многих других языках программирования широко используются для работы с XML.

4. Понимание объектно-ориентированной парадигмы

Объекты в JavaScript устроены красиво и просто. В отличии от других популярных языков, в нём нет ни классов, ни конструкторов, ни модификаторов доступа к полям и методам, ни множества других вещей как отдельных сущностей. Однако эмулируются все эти вещи в языке на ура. Изучение JavaScript быстро приводит к пониманию действительно важных вещей.

Язык очень востребован в сфере веб-технологий, спрос на JavaScript-программистов (хотя желательно и верстальщики должны его знать) есть и он растёт.

Ограничения языка и сложности разработкиправить

  • Реализация JavaScript в разных браузерах отличается. Код, работающий в IE может оказаться нерабочим в FF, и наоборот.
  • Необычная реализации ООП (прототип-ориентированный подход).

JavaScript: Табnица истинности

Основными логическими или булевыми операциями, названными в честь одного из математиков — Джорджа Буля (1815-1864), являются:

  • ИЛИ – логическое сложение (дизъюнкция) – OR;
  • И – логическое умножение (конъюнкция) – AND;
  • НЕ – логическое отрицание (инверсия) – NOT.

Логические операторы работают с операндами так же, как и с булевыми значениями, возвращая или , поэтому эти операции можно описать таблицей истинности, в которой полностью описано их поведение:

Табnица истинности дпя логических операторов
X Y X || Y X && Y !X
false false false false true
true false true false false
false true true false true
true true true true false

Из этой таблицы видно, что результатом работы оператора ИЛИ будет , только если оба его операнда – ; результатом оператора И будет , только если оба из его операндов – . Оператор НЕ прост – он получает один операнд и возвращает обратное значение.

Логические операторы не требуют, что бы их операнды были логическими значениями. Стоит отметить, что все значения в языке JavaScript являются либо истинными , либо ложными .

Ложными () значениями являются , , , , , и (пустя строка). Все другие значения, включая все объекты, являются истинными ().

Как работает JavaScript

Любое действие пользователя на странице порождает событие. Программирование на JavaScript — это обработка событий. Вот как выглядит обычный сценарий:

Пользователь что-то сделал на странице↓В браузере сработало событие↓Запустился JavaScript-код, который назначен на событие↓JavaScript изменил что-то на странице.

Программист пишет обработчик только для тех событий, на которые стоит реагировать:

Пользователь кликнул мышью↓Сработало событие onclick↓Запустилась функция changePhoto↓В галерее сменилось фото

Пользователь нажал клавишу↓Сработало событие onkeydown↓Программист не назначил обработчик события↓Ничего не произошло


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

[править] История

Появление в Netscape

В 1995 году компания Netscape поставила задачу встроить язык программирования Scheme или «какую похожую» в браузер Netscape. Для этого был приглашен Брендан Айк, американский разработчик, специализирующийся на системном программировании. Также, для ускорения разработки, Netscape начали сотрудничество с компанией Sun Microsystems.

Со временем, концепция разрабатываемой языка программирования была расширена до возможности использования непосредственно в HTML-код страницы. Компании имели целью создать язык, который мог связать различные части веб-сайтов: изображений, Java-апплетов, объектной модели документа. Эта речь должна была стать удобной для веб-дизайнеров и неквалифицированных программистов. Рабочим названием нового языка была Mocha, которая была изменена на LiveScript в первых двух бета-версиях браузера Netscape 2.0. А несколько позже, пользуясь популярностью бренда Java, LiveScript был переименован в JavaScript и третья бета-версия (2.0B3) Netscape 2.0 вышла с современным названием. Для этого была приобретена соответствующая лицензия в компании Sun Microsystems, которая владела брендом Java.

В 1992 году компанией Nombas был разработан скриптовый язык программирования Cmm (С-minus-minus, игра слов вокруг языка С++), которая позже была переименована в ScriptEase и мог встраиваться в веб-страницы. Существует ошибочное мнение, что JavaScript был создан под влиянием Cmm. На самом деле, Брендан Айк никогда не слышал о Cmm до того, как он создал LiveScript. Позже, Nombas остановил разработку Cmm и начал использовать JavaScript, а затем участвовал в группе по стандартизации JavaScript.

Стандартизация

В ноябре 1996 года Netscape заявила, что отправила JavaScript в организацию Ecma International для рассмотрения языка как промышленного стандарта. В результате дальнейшей работы появилась стандартизованный язык с названием ECMAScript. В июне 1997 года, Ecma International опубликовала первую редакцию спецификации ECMA-262 . Год назад, в июне 1998 года, чтобы адаптировать спецификацию стандарту ISO / IEC-16262, были внесены некоторые изменения и выпущена вторая редакция. Третья редакция увидела свет в декабре 1999 года.

Четвертая версия стандарта ECMAScript так и не была закончена и четвертая редакция не вышла. Тем не менее, пятая редакция появилась в декабре 2009 года.

На сегодня, актуальная версия стандарта — 5.1. Она была выпущена в июне 2011 года.

Отладка

В JavaScript доступ к отладчикам становится особенно полезным при разработке крупных нетривиальных программ из-за различий в реализациях разных браузеров (в частности, в отношении объектной модели документа). Полезно иметь доступ к отладчику для каждого из браузеров, в которых будет работать веб-приложение.

По состоянию на ноябрь 2009 года, Internet Explorer, Opera, Firefox, Safari, и Google Chrome имеют отладчики сценариев.

Internet Explorer имеет три отладчика: Microsoft Visual Studio — самый полный из них, за ним следует Microsoft Script Editor (компонент Microsoft Office), и, наконец, свободный Microsoft Script Debugger, гораздо более простой, чем два других. Бесплатный Microsoft Visual Web Developer Express предоставляет ограниченную версию с отладочной функцией JavaScript в Microsoft Visual Studio. В восьмой версии в IE вместе с инструментами для разработчиков появился встроенный отладчик.

В Opera также имеется собственный отладчик — Opera Dragonfly.

Разрабатываемые веб-приложения в Firefox можно отлаживать при помощи расширений Firebug, Venkman.

В Safari входит отладчик JavaScript WebKit Web Inspector. Этот же отладчик доступен и в других браузерах, использующих WebKit: Google Chrome, Arora, Rekonq, Midori и др.

JavaScript и политика настроек Фэндома

В то время как JavaScript позволяет изменять и модифицировать любой элемент на вики, многие изменения запрещены Условиями использования и политикой настроек Фэндома. В частности, под строгим запретом находятся модификации глобального навигационного меню, значительные изменения в правой информационной колонке (т. н. рельсе или WikiaRail), любые модификации динамического макета страницы, а также любые сценарии, которые могут преднамеренно либо неумышленно нести неудобства и/или вред участникам, препятствовать отображению текста статей, интерфейса и рекламных объявлений, негативно влиять на другие элементы сайта.

База пользовательских скриптов

Так как скрипты на JavaScript довольно популярны среди технически подкованных участников вики, участники под контролем сотрудников собирают их в одной базе кода — Fandom Developers Wiki. Список написанных пользователями скриптов можно найти здесь.

Немного истории

Первые попытки создать новый удобный язык были предприняты в 1992 компанией Nombas. За основу был взят язык С. Конечная версия обрела название CEnvi. Однако большого распространения данный продукт так и не получил. Затем за дело взялись программист Брендан Эйх, сооснователь Netscape Марк Андриссен и сооснователь Sun Билл Джой. Они лелеяли мечту создать такой язык, который бы смог объединить все части веб-интерфейса, и при этом был бы лёгким для изучения и применения. Синтаксис был взят из модных на тот момент языков высокого уровня — СИ и Java.

По ходу разработки продукт несколько раз переименовывали. Начальная версия называлась Mocha, затем — LiveScript, и уже в финале — JavaScript. В наше время практически каждый пользователь Интернета хотя бы отдалённо знает, что такое JavaScript.

Комментарии

Комментарии позволяют выделить фрагмент программы, который не выполняется интерпретатором JavaScript, а служит лишь для пояснений содержания программы.
Комментарии в JS могут быть однострочными и многострочными.

Однострочные комментарии начинаются с двойного слэша . Текст считается комментарием до конца строки:

Выполнить код »
Скрыть результаты

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

Выполнить код »
Скрыть результаты

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

Основы бэкенд

Как уже упоминалось, еще 10 лет назад JS использовался только для фронтенд-разработки. Теперь, благодаря Node.js, JavaScript работает и на серверной стороне.

SSR, CSR, изоморфные приложения

SSR — Server-Side Rendering – формирование страницы на стороне сервера.

CSR — Client Side Rendering – формирование страницы на стороне клиента (в браузере).

Какие проблемы имеются у этих способов?

SSR имеет ряд ограничений (скорость интернета у клиента, количество одновременных пользователей и т.д.). Это заметно снижало скорость, но это годилось для SEO оптимизации (так как при запросе к серверу робот получал сформированную страницу).

CSR – избавился от проблем скорости SSR (быстрый рендеринг, кеширование), появились одностраничные Single Page Application (SPA).  Но для таких одностраничных приложений CSR SEO оптимизация не годилась, так как весь контент передается клиенту и формируется в браузере (после инициализации начинается загрузка контента), а поисковый робот при запросе на сервер получает лишь пустую страницу.

Node.js

Node — это среда для выполнения JS на стороне сервера. Вам не нужно будет изучать новый синтаксис, а только лишь научиться импортировать и экспортировать файлы, разбивать код на модули и использовать менеджер пакетов npm.

Теперь с помощью NodeJS стало возможным написать логику на серверной стороне, и она будет работать и на сервере (при первом обращении посетителя или поискового робота генерировался HTML с контентом страницы) и в браузере (последующие переходы посетителя). Это и называется изоморфное, универсальное приложение.

Схема функционирования простая: при первом заходе посетитель отправляет запрос на сервер NodeJS, который обращается к API-серверу, берёт данные в виде JSON и формирует страницу HTML, возвращая её клиенту. Теперь приложение работает на клиентской стороне, в браузере: при переходе на другие страницы приложение обращается за данными к API-серверу, и отрисовывает страницу уже в браузере.

В React (см. дальше) реализация этой схемы осуществляется разными и сложными путями. В качестве готовых решений есть для этого, например, фреймворк Next.js. В документации Vue (см. дальше) есть целый раздел, посвященный SSR. Там указан фреймворк Nuxt — Vue + SSR, при помощи которого можно быстро создавать универсальные приложения.

Серверы, HTTP, Express.js

Изучив Node, можно более глубже изучить бэкенд-разработку и разобраться в серверах и маршрутизации. Акцент делать на портах, протоколах HTTP. Затем можно просмотреть  Express-Node-библиотеку для обработки запросов.

Асинхронный JavaScript

Асинхронность является одной из главных фишек (фич) JavaScript, хотя и создаёт некий раскол среди разработчиков: некоторые её любят, а некоторые — ненавидят. Нужно разобраться в её  плюсах и минусах. Начните со стека вызовов, цикла событий и коллбеков, а затем перейдите к изучению промисов здесь или здесь.

Базы данных, СУБД, схемы, модели и ORM

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

Нужно научиться различать реляционные и нереляционные базы данных и разобраться в типах связей. Затем изучить SQL и быть в курсе разных систем управления базами данных. Знание ORM тоже не помешает.

Веб-сокеты

Не стоит пренебрегать этой темой. Веб-сокеты очень полезны. В отличие от протокола HTTP WebSocket позволяет работать с двунаправленным потоком данных. Самой распространённой реализацией является библиотека socket.io .

Также нужно разобраться в механизме взаимодействия приложения с пользователем, обработки им входа в учетную запись, отслеживания личности при помощи cookies — небольших текстовых файлов, которые передаются от сервера браузеру по HTTP-запросу. Связь между БД и страницей авторизации использует библиотеку express-session.

Урок 2: инструменты разработчика[править]

Обязательно нужен хороший редактор. Он должен иметь:

  • Подсветку синтаксиса
  • Автодополнение
  • Фолдинг (возможность скрыть-раскрыть блок кода)

IDE
Мощные редакторы, позволяют работать с проектом, включая автодополнение по файлам и т.п.

Платные IDE:

  • Intellij WebStorm
  • Microsoft Visual Studio
  • Komodo IDE
  • и др.

Бесплатные IDE:

  • Eclipse и на его основе Aptana.
  • Visual Studio Code
  • NetBeans
  • Komodo Edit
  • и др.

«Легкие» редакторы

Такие редакторы не такие мощные, как IDE, но они быстрые и простые.

  • TextMate (Mac, платный)
  • SciTe простой, легкий и очень быстрый (Windows, бесплатный).
  • Notepad++ (Windows, бесплатный).
  • Sublime Text 2 (кросс-платформенный, неограниченный бесплатный триал).
  • Vim, Emacs.

ИЛИ «||» находит первое истинное значение

Описанная выше логика соответствует традиционной. Теперь давайте поработаем с «дополнительными» возможностями JavaScript.

Расширенный алгоритм работает следующим образом.

При выполнении ИЛИ || с несколькими значениями:

Оператор выполняет следующие действия:

  • Вычисляет операнды слева направо.
  • Каждый операнд конвертирует в логическое значение. Если результат , останавливается и возвращает исходное значение этого операнда.
  • Если все операнды являются ложными (), возвращает последний из них.

Значение возвращается в исходном виде, без преобразования.

Другими словами, цепочка ИЛИ возвращает первое истинное значение или последнее, если такое значение не найдено.

Например:

Это делает возможным более интересное применение оператора по сравнению с «чистым, традиционным, только булевым ИЛИ».

  1. Получение первого истинного значения из списка переменных или выражений.

    Представим, что у нас имеется ряд переменных, которые могут содержать данные или быть . Как мы можем найти первую переменную с данными?

    С помощью :

    Если бы и , и были ложными, в качестве результата мы бы наблюдали .

  2. Сокращённое вычисление.

    Операндами могут быть как отдельные значения, так и произвольные выражения. ИЛИ вычисляет их слева направо. Вычисление останавливается при достижении первого истинного значения. Этот процесс называется «сокращённым вычислением», поскольку второй операнд вычисляется только в том случае, если первого недостаточно для вычисления всего выражения.

    Это хорошо заметно, когда выражение, указанное в качестве второго аргумента, имеет побочный эффект, например, изменение переменной.

    В приведённом ниже примере не изменяется:

    Если бы первый аргумент имел значение , то приступил бы к вычислению второго и выполнил операцию присваивания:

    Присваивание – лишь один пример. Конечно, могут быть и другие побочные эффекты, которые не проявятся, если вычисление до них не дойдёт.

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

    В большинстве случаев лучше использовать «обычный» , чтобы облегчить понимание кода, но иногда это может быть удобно.

Другие возможности JavaScript

Мы коротко рассмотрели, как:

  • работать с функциями, переменными и объектами;
  • получать элементы и изменять их атрибуты, стили и содержимое;
  • отправлять запросы на сервер и получать ответ;
  • устанавливать таймеры;
  • использовать условия.

Еще на JavaScript можно работать с анимацией, проводить вычисления, рисовать на холсте (canvas), создавать cookies и многое другое. Мы поговорили лишь о малой части тех возможностей, которые доступны разработчику на JavaScript, — описать их в одной статье невозможно. Именно поэтому JS так популярен. Ну и еще потому, что у него нет альтернатив.

Если вы хотите узнать больше обо всем этом, записывайтесь на курс «Frontend-разработчик». Там вас научат верстать на HTML и CSS и создавать взаимодействия с пользователем на JavaScript.

Курс «Профессия frontend-разработчик»

С нуля до разработчика с зарплатой от60 000 рублей за6 месяцев. Научитесь верстать сайты и создавать интерфейсы, соберите два проекта в портфолио и получите современную профессию.

  • Живая обратная связь с преподавателями
  • Неограниченный доступ к материалам курса
  • Стажировка в компаниях-партнёрах
  • Дипломный проект от реального заказчика
  • Гарантия трудоустройства в компании-партнёры для выпускников, защитивших дипломные работы

Идентификаторы

Идентификатор — это последовательность букв, цифр, символов подчёркивания и знаков доллара . Цифра не может быть первым символом идентификатора, т. к. тогда интерпретатору JavaScript труднее отличать идентификаторы от чисел. Идентификаторы выступают в качестве имён переменных, функций, свойств объекта и т. д.
Для совместимости и простоты редактирования для составления идентификаторов обычно используются только символы ASCII и цифры. Однако в ECMAScript v3 идентификаторы могут содержать буквы и цифры из полного набора символов Unicode. Это позволяет программистам давать переменным имена на своих родных языках и использовать в них математические символы:

Исторически, программисты использовали разные способы объединения нескольких слов для записи идентификаторов. Сегодня есть два устоявшихся негласных стиля: camelCase и snake_case.
В JavaScript наиболее популярным стилем именования идентификаторов, состоящих из нескольких слов, является camelCase – «верблюжья» нотация. Это означает, что первая буква является строчной, а первые буквы всех последующих слов – прописными, например:

Хотя это не является требованием, рекомендуется следовать этому правилу, чтобы не отступать от формата встроенных функций и объектов ECMAScript.

Внимание: В JavaScript объединение нескольких слов для записи идентификаторов с применением дефисов запрещено. Они зарезервированы для математических вычитаний

В JavaScript ключевые слова, зарезервированные слова и значения , и не могут быть идентификаторами.

Применение внутри веб-страниц

Внедрение в документ происходит путем указания специальных тегов, означающих начало и конец скрипта — <script> и </script>. Как правило, встраивать скрипт непосредственно в HTML-код считается моветоном. Более изящным и признанным способом является вынесение кода в отдельный файл, а затем подключение его в нужном месте страницы.

Что такое JavaScript в плане синтаксиса? Типичный код может выглядеть так:

<script>

alert(`Привет Мир!`);

</script>

Это самая простейшая реализация, с помощью которой можно увидеть базисные элементы и их использование. Объявление переменных в языке происходит путем указания ключевого слова var и последующего имени. Например, так: var variablename.

Чтобы присвоить ей некое значение, используется знак равенства. Есть 6 известных типов переменных в JavaScript. Это число, строка, булев, нуль, неопределённый и объект. Как правило, жёсткого указания типа при создании не требуется. То есть переменная может принимать практически любое значение. Более подробно о свойствах языка можно узнать из официальных руководств по нему.

Главные отличия JavaScript от других Си-подобных языков

При изучении языка JavaScript у многих возникают некоторые трудности в связи с тем, что JavaScript хоть и Си подобный но имеет некоторые серьёзные, из привычного ряда вон выходящие, отступления от базового Си подобного синтаксиса. У JavaScript имеется своя извращённая концепция представления объектов, по сути всё в JavaScript состоит из объектов. Вообще сложно понимать концепцию данного языка без понимания полноценной объектно-ориентированной парадигмы, которая имеется в тех же C++, Java, C# и других языках программирования.

В JavaScript всё является объектами, абсолютно всё. Стандартная библиотека языка состоит из объектов. Эти объекты в нормальном понимании ООП являются ни чем иным как предопределёнными классами, в здравых полноценных языках так и есть, но в JS это объекты. При этом, работая с JavaScript, о самом слове «класс» можно забыть, так как официально их там нет, есть только объекты. В общем немного нелепая модель кастрированного ООП получается. Естественно это было сделано изначально для простоты и облегчения понимания концепции ООП. В общем хотели как лучше, а получилось как всегда. Во всём остальном JavaScript мало чем отличается от других Си подобных объектно-ориентированных языков программирования за исключением следующих моментов.

В JavaScript широко практикуются следующие вещи
Функции в функциях (вложенность функций);
function someFunc() {
    function foo () {
        return true;
    }
}

Внутри функции объявлена другая функция.

Ссылкой на функцию может быть переменная (или свойство) путём присвоения функции переменной;
var foo = function a() {
    return 1;
}

Переменная содержит ссылку на функцию . Именно ссылку а не результат работы функции. Теперь обратиться к функции можно через имя переменной следующим образом:

Можно определять безымянные функции;
function() {
    alert("some text");
}

Применение методов стандартной библиотеки к элементам через точку;

var str = "some string";
var foo = str.toString()

Переменная явно преобразовывается в тип . Всё потому, что каждая переменная идеологически является объектом.

Набор символов

При написании программ на JavaScript используется набор символов Unicode. В отличие от 7-разрядной кодировки ASCII, подходящей только для английского языка, и 8-разрядной кодировки ISO Latin-1, подходящей только для английского и основных западноевропейских языков, 16-разрядная кодировка Unicode поддерживает практически все письменные языки, имеющиеся на планете. Стандарт ECMAScript v3 требует, чтобы реализации JavaScript обеспечивали поддержку стандарта Unicode версии 2.1 или выше, а стандарт ECMAScript v5 требует, чтобы реализации обеспечивали поддержку стандарта Unicode версии 3 или выше.

Использование JavaScript в приложениях

Приложения, написанные на JavaScript, могут исполняться на серверах, использующих Java 6 и более поздних версий. Это обстоятельство используется для построения серверных приложений, позволяющих обрабатывать JavaScript на стороне сервера.

Помимо Java 6, существует ряд платформ, использующих существующие движки (интерпретаторы) JavaScript для исполнения серверных приложений. (Как правило, речь идёт о повторном использовании движков, ранее созданных для исполнения кода JavaScript в браузерах WWW.)

Название Используемый движок JavaScript Языки, на которых написан движок и платформа Лицензия
Jaxer SpiderMonkey C++, C GPL 3
persevere-framework Rhino Java Модифицированная лицензия BSD
Helma Rhino Java, JavaScript BSD-подобная Helma License 2.0
v8cgi V8 C++, JavaScript Лицензия BSD
node.js V8 C++ Лицензия MIT

Как JavaScript отличается от других языков программирования?

Причина, по которой JavaScript является одним из самых популярных языков программирования, его универсальность. К слову, много разработчиков обращаются к языку программирования JavaScript как к основному, а к другим языкам только, если им потребуется что-то более специфическое.

Давайте посмотрим на несколько популярных языков программирования:

JavaScript JavaScript или сокращённо JS создан для добавления интерактивности на сайте. Скрипты запускаются в браузере пользователя, а не на сервере и обычно обращаются к библиотекам третьей стороны для обеспечения более расширенных функций без надобности каждый раз писать этот код разработчикам.
HTML Сокращённо от «Hypertext Markup Language», HTML — это основной язык программирования для веб, формирующий строительные блоки веб-страницы. Пример: HTML тэги, включая <p> для параграфа и <img> для изображений.
PHP PHP — язык стороны сервера в отличие от JavaScript, который запускается на компьютере клиента. Его можно чаще всего встретить в системах управления контентом основанных на PHP как, например, WordPress, но он также широко используется для создания бэкенда, так как предоставляет удобные способы передачи информации в и из базы данных.
CSS CSS — сокращение от «Cascading Style Sheets» и позволяет веб-мастерам задать стили и определить как отображается различный тип контента. Вы можете делать это вручную для каждого элемента HTML, но с применением CSS вы убережёте себя от необходимости повторять способ отрисовки элементов каждый раз при их появлении.

Если мы сравним программирование со строительством дома, то HTML будет задавать структуру дома и где будут расположены стены и двери, в то время как CSS будет отвечать для обои и отделку, которые украшают дом, чтобы сделать его более привлекательным. JavaScript добавляет удобство и означает, что вы можете включить свет и открыть двери. Вы можете обойтись и без этого, но есть риск того, что ваш сайт будет выглядеть и вести себя как «привет из» 1995 года.

Взросление и принятие ответственности

Со своей стороны JavaScript уже давно осознал свою роль не как язык для интерактивности интернет-страничек и «склеивания» их ресурсов, но как мощнейший и достаточный инструмент создания полноценных кросс-платформенных и часто очень даже масштабируемых приложений.

Изначально разработанный для веб-дизайнеров этот «самый неправильно понятый язык программирования» долгое время топтался на месте, несмотря на стремительно растущую популярность и значимость. За 13-14 лет, предшествующие редакции ECMAScript 5.1, трудно вспомнить какие-то важные изменения в стандарте или понять вектор его развития. В то время огромный вклад в формирование экосистемы языка вносило его комьюнити: Prototype, jQuery, MooTools и проч. Получив эту обратную связь от разработчиков, JavaScript проделал значительную работу над ошибками: громкий 6-летний релиз ES6 в 2015 году и теперь уже ежегодные релизы ECMAScript, благодаря переработанному комитетом TC39 процессу внесения новых возможностей в спецификацию.

Что ж, когда наши приложения стали достаточно большими, прототипная модель ООП для описания пользовательских типов перестала себя оправдывать из-за непривычного подхода. Ну серьезно, что это?

В языке не появились классы, но появился их синтаксис. И код стал доступен для приверженцев традиционной класс-ориентированной парадигмы:

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

В то же время, в языке, где функция является объектом первого порядка и имеет место постоянная событийность, совершенно обычное дело:

И тут начинаются объяснения о контекстах this и замыкании в JavaScript, что отпугивает каждого второго внешнего разработчика. Но во многих случаях, язык позволяет избежать лишних удивлений, явно используя Function.prototype.bind или вовсе так:

У нас тоже появились стрелочные функции, и это действительно — функции, а не функциональные интерфейсы (да, Java?). Вместе с расширенным набором методов работы с массивом они также помогают писать привычный декларативный пайплайн вычислений:

Язык по праву считает себя мультипарадигменным. Но вот простой пример про сигнатуру некоторой функции:

Сначала проходящий мимо задастся вопросом мол вероятно функция может принимать только первый аргумент, а потом мол какого черта в этом случае count становится булевом!? И действительно, функция имеет два варианта использования: с указанием count и без. Но это совершенно неочевидно: приходится смотреть в реализацию и понимать. Разобраться может помочь использование JSDoc, но это не общепринятая практика. И здесь JavaScript пошел навстречу, добавив поддержку не перегрузки, но хотя бы дефолтных параметров:

Резюмируя, JavaScript обзавелся огромным числом привычных вещей: генераторы, итераторы, коллекции Set и словари Map, типизированные массивы, да даже регулярные выражения начали радовать поддержкой lookbehind! Язык делает все, чтобы быть пригодным для многих вещей и стать дружелюбным для всех.

Управление скриптами

Блок «Статус пользовательского JavaScript»

Главное отличие Фэндома от других википроектов области JS — система проверки кода. JavaScript исполняется на стороне клиента и имеет полный доступ к странице, на которой работает. Подобное поведение потенциально опасно для участников, например, возможно перехватить сессию или опубликовать нежелательное сообщение от лица другого человека. Поэтому в сентябре 2015 года была выпущена система, которая предотвращает выполнение непроверенного кода (а бонусом также отбрасывает нерабочие скрипты). Поводом к началу активных действий послужил взлом ряда учётных записей хотя планы по регулированию этой области появились и ранее. Во время ввода системы одним из вопросов было отсутствие подобной системы на Википедии и других крупных ресурсах. Причина кроется в различной архитектуре: на Фэндоме очень большое количество различных проектов, и далеко не всегда на проекте есть люди, способные следить за скриптами. При этом, на той же Википедии летом 2018 года был введён дополнительный статус «Администраторы интерфейса», разграничивающие редактирование JS и CSS файлов всего сайта от редактирования прочих MediaWiki-сообщений.

Личные скрипты

Кроме общих для вики страниц, участники могут использовать личные подстраницы для загрузки скриптов только для себя лично, а не для всех пользователей. Подстраницы работают сразу, без проверки и именуются по следующему принципу: Участник: ИмяУчастника/название_скина_с_прописной_буквы.js (пример: Участник: ИмяУчастника/common.js).

Для применения сценариев сразу ко всем вики на Фэндоме (только для одного участника, а не для всех участников википроектов), их необходимо добавить на страницу Участник: ИмяУчастника/global.js.

История JavaScript

JavaScript был создан за 10 дней автором Бренданом Айком (Brandan Eich), работавшим на Netscape в далёком 1995 году. Изначально он был назван Mocha, имя языка было сменено на Mona и потом на LiveScript пока наконец он не стал JavaScript. Первоначальная версия языка была ограничена только браузером Netscape и предлагала узкую функциональность, но со временем он продолжил развиваться частично благодаря сообществу разработчиков, которые не оставляли работу над ним.

В 1996 году язык JavaScript был стандартизирован и было дано официальное имя ECMAScript, с ECMAScript 2 вышедшим в 1998 и ECMAScript 3 в следующем 1999 году. Это преобразовалось в сегодняшний JavaScript, которые теперь работает не только в разных браузерах, но также на различных устройствах, включая мобильные и настольные компьютеры.

JavaScript продолжил рост с тех пор до показателей 92% сайтов, использующих его в 2016 году. Всего за двадцать лет он превратился из примитивного языка программирования в один из наиболее популярных инструментов в арсенале веб-разработчика. Если вы используете интернет, то вы непременно сталкивались с JavaScript.

Итоги

  • Логическое И возвращает тогда и только тогда, когда оба операнда преобразуются в .
  • Логическое ИЛИ возвращает если хотя бы один или оба операнда преобразуются в .
  • Операторы и поддерживают сокращенное вычисление: если первого операнда достаточно для определения результата, второй операнд не оценивается. Так, если первый операнд логического И эквивалентен значению , то второй операнд не оценивается. В случае с логическим ИЛИ наоборот, правый операнд не оценивается, если левый эквивалентен значению .
  • Логическое отрицание НЕ используется для инверсии (переворачивание смысла) логического значения своего операнда и всегда возвращает или .
  • С помощью двух логических НЕ можно преобразовать значение операнда в его логический эквивалент.
  • Логические операторы , и имеют разные приоритеты – соответственно . Поэтому встретившись в одном выражении (без приоритетных скобок) эти операторы выполнятся в указанной последовательности.
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector