NotesWhat is notes.io?

Notes brand slogan

Notes - notes.io

ВЕЛИКОЛЕПНЫЙ JS

что заставить работать - способы взаиомдествия со сложн системой (интерфесы. граф не дают выйти за рамки заложенные дизайном)
находится в памяти и при этом управляет эту память
ПК может выполнять лишь простые действия, но очень быстро. Сложная комбингация простых дает сложные результаты. Но сложные комбинации легко могут запутать даже автора. Искусство программирования - умение контролировать сложность
Программа - мысленная конструкция, ничго не весит.
Есть только данные. Их можео читать, изменять, создавать новые и сохранять. Но кроме данных ничего нет и ои хранятся последовательностью бит

Третье число: NaN . Обозначает «not a number» (не число), хотя это величина числового типа. Вы можете получить её после вычислений типа 0 / 0, Infinity – Infinity, или других операций, которые не ведут к точным осмысленным результатам

1. Строки
2. Числа
3. Булевы значения
4. Объекты
5. Функции
6. Неопределенна величина

+ * / бинарные операторы
typeof унарный
мину может быть
банирным 5 - 2
унарным -2

Строки сравниваются на основа их unicode идишников, а знчит заглавная > строчную

NaN (Not a Number) - чичловая переменная, единчственная не равная самой себе
NaN – это результат любого бессмысленного вычисления, поэтому он не равен результату какого-то другого бессмысленного вычисления.

&& and
|| or
! negative

приоритеты
или < и < сравнение < остальные

не унарный и не бинарные, а тройной булевый оператор
console.log(x >= y ? x : y) - если левая часть истина вернет значение перед двоеточием, если ложно то значение после двоеточки

null, undefined - отсутствие осмысленного значения, рахницы нет

[r] приведение типов в js

При сравнении величин одного типа через ==, легко предсказать, что вы должны получить true, если они одинаковые (исключая случай с NaN). Но когда типы различаются, JavaScript использует сложный и запутанный набор правил для сравнений. Обычно он пытается преобразовать тип одной из величин в тип другой. Когда с одной из сторон оператора возникает null или undefined, он выдаёт true только если обе стороны имеют значение null или undefined.


console. log( null == undefined) ;
console. log( null == 0) ;

Последний пример демонстрирует полезный приём. Когда вам надо проверить, имеет ли величина реальное значение вместо null или undefined, вы просто сравниваете её с null при помощи == или !=

0 == "" == false

=== точное сравнение (без приведение типов), рекомендуется к использованию
!==

булево сравнение или жадное, возращает переменную на которой получил 100% тру
это можо использовать как откат к перовнчальному знгачению
И жаднрое и возращает первый фалссе

операторы усолвия (if) тоже жедноеи идет по фам до тех пор, пока нет тру и этот иф исполняет

- отрицание
! логич отрицание
type of унарный оператор, а не функция

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

функция принимает аргументы

Закливание - возращение в определенную точку прогграммым и выполнение всего хода снова с новым состоянием программы

{} - блок форм из нескольких инструкций одну

ветвление потока программы:
while
do
for

break
continue

switch
case
braek
case
break
default
break

Окружение - набор переменных, доступных этому участку ил всей программе
[r] Функция - особая перименная

Дональд Кнут
научи компьютер
идеи стоят друг на друге

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


return без выражения возвращает значение undefined
параметры - переменные, значения которых задается при вызове функции, а не в ее теле
переменные из основной программы, если не создана с таким же именем внутри функции, будет глобальной и доступны в теле функции
вложенные функции видят паеременные функций, в которых были созданы, но не видят переменные функций братьев и сестер

В версии JavaScript 1 .7 появилось ключевое слово let, которое работает как var, но создаёт переменные,
локальные для любого данного блока, а не только для функции.



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


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

JavaScript очень лоялен по поводу количества аргументов, передаваемых функции. Если вы передадите слишком много, лишние будут проигнорированы. Слишком мало – отсутствующим будет назначено значение undefined.

[r]
стек вызова
область видимости
замыкания
быстродействия, сложности алгоритмов

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

return null || 1 в ркурсии (стр 93)
т.к. жадный алгоритм, то второй вариант не расчитывается, пока удовлетворяет первый

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


[r] выражение / инструкция
Эта глава показала вам, как писать собственные функции. Когда ключевое слово function используется в виде выражения, возвращает указатель на вызов функции. Когда оно используется как инструкция, вы можете объявлять переменную, назначая ей вызов функции.

обэект.свойство
объект.метод()


Почти у всех переменных в JavaScript есть свойства. Исключения — null и undefined. Если вы попробуете получить доступ к несуществующим свойствам этих невеличин, получите ошибку
Если попытаться получить отст свойство - выдает undefined

Два основных способа доступа к свойствам – точка и квадратные скобки. value.x и value[x] получают доступ к свойству value – но не обязательно к одному и тому же. Разница в том, как интерпретируется x. При использовании точки запись после точки должна быть именем существующей переменной, и она таким образом напрямую вызывает свойство по имени. При использовании квадратных скобок выражение в скобках вычисляется для получения имени свойства. value.x вызывает свойство под именем “x”, а value[x] вычисляет выражение x и использует результат в качестве имени свойства.

var a = [1, 2, 3, 4]
a.length()
a.push(100)
a.pop
a.joi(' ')


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

delete obj.opt # удалить сво-во объекта

Оператор == при сравнении объектов возвращает true только, если сравниваемые объекты – это одна и та же переменная. Сравнение разных объектов вернёт false, даже если у них идентичное содержимое. Оператора «глубокого» сравнения, который бы сравнивал содержимое объектов, в JavaScript не предусмотрено, но его возможно сделать самостоятельно (это будет одним из упражнений в конце главы)

.unshift / .shift добавля/удаяляет первый элемент

[] индексированный массив
{} ассоциативный массив (словарь)

.indexOf() # индекс вхождения
.lastIndexOf() # индекс вхождения сконца

.slice(start [,end])
.concat()
.trim() # удаляет спец симл и пробелы сначала и конца строки
.cahrAt()

если кол-во аргументов != колву параметров, то лишние аргументы отбросятся, а недостающие будут undefined

через тру белку, а остальные аргументы не пераметры и обходишь их через argumetns[1:]
Math - пространство имен

локальные переменные в argumetns
глобальные в window (смотри, не переприсвой!)

массив - инедксировананя последовательность, объект у которогоо свойства с именами-числами

ащк (var i in obj)

a.raverse() разворачивает массив
     
 
what is notes.io
 

Notes.io is a web-based application for taking notes. You can take your notes and share with others people. If you like taking long notes, notes.io is designed for you. To date, over 8,000,000,000 notes created and continuing...

With notes.io;

  • * You can take a note from anywhere and any device with internet connection.
  • * You can share the notes in social platforms (YouTube, Facebook, Twitter, instagram etc.).
  • * You can quickly share your contents without website, blog and e-mail.
  • * You don't need to create any Account to share a note. As you wish you can use quick, easy and best shortened notes with sms, websites, e-mail, or messaging services (WhatsApp, iMessage, Telegram, Signal).
  • * Notes.io has fabulous infrastructure design for a short link and allows you to share the note as an easy and understandable link.

Fast: Notes.io is built for speed and performance. You can take a notes quickly and browse your archive.

Easy: Notes.io doesn’t require installation. Just write and share note!

Short: Notes.io’s url just 8 character. You’ll get shorten link of your note when you want to share. (Ex: notes.io/q )

Free: Notes.io works for 12 years and has been free since the day it was started.


You immediately create your first note and start sharing with the ones you wish. If you want to contact us, you can use the following communication channels;


Email: [email protected]

Twitter: http://twitter.com/notesio

Instagram: http://instagram.com/notes.io

Facebook: http://facebook.com/notesio



Regards;
Notes.io Team

     
 
Shortened Note Link
 
 
Looding Image
 
     
 
Long File
 
 

For written notes was greater than 18KB Unable to shorten.

To be smaller than 18KB, please organize your notes, or sign in.