Выражения
Любая программа — это набор операций. Чтобы описать программу, разработчик пишет различные выражения на языке программирования. Посмотрим на самое простое выражение — откроем консоль любого браузера и введём туда элементарное выражение — число 123.
Когда мы нажмём Enter, консоль ответит нам тем же самым числом. Поздравляю, это было самое простое выражение. Интерпретатор JavaScript выполнил его и вернул результат последней (в данном случае единственной) операции.
#числа #выражения
Любая программа — это набор операций. Чтобы описать программу, разработчик пишет различные выражения на языке программирования. Посмотрим на самое простое выражение — откроем консоль любого браузера и введём туда элементарное выражение — число 123.
Когда мы нажмём Enter, консоль ответит нам тем же самым числом. Поздравляю, это было самое простое выражение. Интерпретатор JavaScript выполнил его и вернул результат последней (в данном случае единственной) операции.
#числа #выражения
Примитивные типы данных
Когда мы объявляем переменную и сохраняем в неё примитивное значение, то в память записывается какое-то количество байт, которое описывает это значение. Таким образом можно сказать, что наша переменная уже сразу содержит эти байты.
Если присвоить какое-то значение переменной в другую, то мы просто скопируем это же количество байт в новое место.
Когда мы сравниваем два значения, то у нас по сути произойдёт побайтовое сравнение этих величин.
#данные #const
Когда мы объявляем переменную и сохраняем в неё примитивное значение, то в память записывается какое-то количество байт, которое описывает это значение. Таким образом можно сказать, что наша переменная уже сразу содержит эти байты.
Если присвоить какое-то значение переменной в другую, то мы просто скопируем это же количество байт в новое место.
Когда мы сравниваем два значения, то у нас по сути произойдёт побайтовое сравнение этих величин.
#данные #const
Ссылочные типы данных
С объектами и другими сложными данными дела обстоят сложнее из-за того, что мы не знаем, какое количество памяти для них понадобится. Во время работы с такой структурой компьютеру необходимо следить за тем, сколько памяти уже есть, сколько понадобится, и выделять новую.
Работать с такими данными сложнее. Для этого компьютер отдаёт нам ссылку на место, где данные хранятся, и самостоятельно будет работать с ними по инструкциям, которые мы ему даём. Таким образом в переменную мы получаем лишь ссылку на данные.
Если сейчас присвоить значение из
#данные #const
С объектами и другими сложными данными дела обстоят сложнее из-за того, что мы не знаем, какое количество памяти для них понадобится. Во время работы с такой структурой компьютеру необходимо следить за тем, сколько памяти уже есть, сколько понадобится, и выделять новую.
Работать с такими данными сложнее. Для этого компьютер отдаёт нам ссылку на место, где данные хранятся, и самостоятельно будет работать с ними по инструкциям, которые мы ему даём. Таким образом в переменную мы получаем лишь ссылку на данные.
Если сейчас присвоить значение из
myData
в другую переменную, то мы скопируем ссылку, а не само значение.#данные #const
Мутации и неизменяемость
Изменение значений у полей объекта, добавление или удаление их отразится на всех, кто владеет ссылкой на этот объект. Такие операции называют мутациями. В современных веб-разработке мутаций стараются избегать, потому что мутирование объектов может приводить к ошибкам, которые очень трудно отследить. Однако если мы твердо уверены, что объект нигде более не используется или чётко контролируем ситуацию, то изменение объекта напрямую гораздо проще.
Если нужно безопасно модифицировать объект, то для начала придётся его скопировать. Скопировать объект можно двумя способами: через
#данные #const
Изменение значений у полей объекта, добавление или удаление их отразится на всех, кто владеет ссылкой на этот объект. Такие операции называют мутациями. В современных веб-разработке мутаций стараются избегать, потому что мутирование объектов может приводить к ошибкам, которые очень трудно отследить. Однако если мы твердо уверены, что объект нигде более не используется или чётко контролируем ситуацию, то изменение объекта напрямую гораздо проще.
Если нужно безопасно модифицировать объект, то для начала придётся его скопировать. Скопировать объект можно двумя способами: через
Object.assign()
или используя спред-синтаксис .#данные #const
👍3
Объявление функции
Объявление функции расшифровывается так:
1. В начале идёт ключевое слово
2. Затем имя функции, чтобы можно было отличить одну функцию от другой (у нас лаконичное hello, но бывает лаконичное ничего...);
3. В круглых скобках мы указываем параметры (можно и без), которые передадим внутрь;
4. Наконец, тело функции — это код в фигурных скобках, который выполняется при её вызове.
#функции #alert
Подробнее
Объявление функции расшифровывается так:
1. В начале идёт ключевое слово
function
, чтобы заявить о наших намерениях объявить функцию;2. Затем имя функции, чтобы можно было отличить одну функцию от другой (у нас лаконичное hello, но бывает лаконичное ничего...);
3. В круглых скобках мы указываем параметры (можно и без), которые передадим внутрь;
4. Наконец, тело функции — это код в фигурных скобках, который выполняется при её вызове.
#функции #alert
Подробнее
👍3
.findIndex()
Метод
Если вам нужно получить элемент, а не его индекс, то используйте метод
#массив #findIndex
Подробнее
Метод
findIndex()
возвращает индекс первого найденного в массиве элемента, который подходит под условие переданной функции. Если же ни одного подходящего элемента не найдётся, то метод вернёт -1.Если вам нужно получить элемент, а не его индекс, то используйте метод
find()
. А если необходимо проверить наличие чего-либо в массиве, то сначала обратите внимание на метод includes()
.#массив #findIndex
Подробнее
👍11
Параметры
При вызове функции можно передать данные, они будут использованы кодом внутри.
Например, функция
#функции #параметры
При вызове функции можно передать данные, они будут использованы кодом внутри.
Например, функция
showMessage
принимает два параметра под названиями user и message, а потом соединяет их для целого сообщения. При вызове функции ей нужно передать аргументы. Функцию можно вызывать сколько угодно раз с любыми аргументами.#функции #параметры
👍3
Параметры
При вызове функции можно передать данные, они будут использованы кодом внутри.
Например, функция
#функции #параметры
При вызове функции можно передать данные, они будут использованы кодом внутри.
Например, функция
showMessage
принимает два параметра под названиями user и message, а потом соединяет их для целого сообщения. При вызове функции ей нужно передать аргументы. Функцию можно вызывать сколько угодно раз с любыми аргументами.#функции #параметры
👍2
Функция и переменные
Переменные внутри функции существуют только внутри этой функции — этот эффект называется областью видимости.
Если пытаться вызвать их снаружи, то возникнет ошибка. В примере выше мы увидим, что
#функции #переменные
Подробнее
Переменные внутри функции существуют только внутри этой функции — этот эффект называется областью видимости.
Если пытаться вызвать их снаружи, то возникнет ошибка. В примере выше мы увидим, что
numberFive
не задан, поскольку вне функции мы действительно не задали numberFive
.#функции #переменные
Подробнее
👍2
Рекурсивные функции
Внутри функции можно вызывать её саму — это пример рекурсивной функции.
Если разложить пример, то получится следующая цепочка:
- fac(3) это 3 * fac(2);
- fac(2) это 2 * fac(1);
- fac(1) это 1.
Получается, что
#функции #рекурсия
Подробнее
Внутри функции можно вызывать её саму — это пример рекурсивной функции.
Если разложить пример, то получится следующая цепочка:
- fac(3) это 3 * fac(2);
- fac(2) это 2 * fac(1);
- fac(1) это 1.
Получается, что
fac(3) это
3 * 2 * 1, то есть 6. Такой подход часто применяется в математических операциях, но не ограничивается ими.#функции #рекурсия
Подробнее
👍5
Массив
Массив — это структура, в которой можно хранить коллекции элементов — чисел, строк, других массивов и так далее. Элементы нумеруются и хранятся в том порядке, в котором их поместили в массив. Элементов может быть сколько угодно, они могут быть какими угодно.
Массивы очень похожи на нумерованные списки.
#массив #const
Подробнее
Массив — это структура, в которой можно хранить коллекции элементов — чисел, строк, других массивов и так далее. Элементы нумеруются и хранятся в том порядке, в котором их поместили в массив. Элементов может быть сколько угодно, они могут быть какими угодно.
Массивы очень похожи на нумерованные списки.
#массив #const
Подробнее
👍3
.findIndex()
Метод
Если вам нужно получить элемент, а не его индекс, то используйте метод
#массив #findIndex
Подробнее
Метод
findIndex()
возвращает индекс первого найденного в массиве элемента, который подходит под условие переданной функции. Если же ни одного подходящего элемента не найдётся, то метод вернёт -1.Если вам нужно получить элемент, а не его индекс, то используйте метод
find()
. А если необходимо проверить наличие чего-либо в массиве, то сначала обратите внимание на метод includes()
.#массив #findIndex
Подробнее
👍6❤2🔥1