ПРИМИТИВНЫЕ ТИПЫ Flashcards

1
Q

Примитивные типы

A

string (строка)

boolean (логический)-true or false -два значения .

Number :0.1 20 0 2,1

Null -это я сам ставлю переменой неопределенное значения и иногда это может пригодится
Undefined -неопределенный
Symbol -можно создавать уникальное значение !

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Ссылочный тип
Примеры

A

Object -объект
0X3151>(
A:10
B-True
)
Это объект и в таком случае переменная содержит ссылку на данный объект со свойствами

0x7213> [1,2,3]
Это массив и здесь также переменная содержит массив

Может быть -две разных переменных , которые содержат один и тот же объект

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Слова вызывающие переменные

A

Const -объявление с прививанием
Let - объявление переменной , которую можно в дальнейшем изменять и корректировать

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Добавление нового свойства в объект ?
Пример

A

copy0fA.c= ‘abc’
Точка дает доступ к объекту !
И даже если это свойство отсутствует в объекте -оно будет создано !

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Статическая типизация

A

String a= ‘abc’
int b=10
b=‘xyz’//Error
Это пример статической типизации -когда при указывание переменой также указывается тип этой переменной (string) integer-целое число и это тоже факт !

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Динамическая типизация

A

a= ‘abc’//String
a=10 //Number
Объявлять данную переменную необходимо при помощи let -т.к строку необходимо менять в будущем.
JavaScript динамически типизированный язык , поэтому здесь ярко выражено , что переменная a может меняться .

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Динамическая типизация
Функция

A

function a() {
console.log (Hey there’)
}
a() // ‘Hey there’
a = 10
a() //Uncaught TypeError: a is not a function
Вызов функции благодаря ()
Где a=10 - я изменил переменную и тем самым когда вызвал ее получил ошибку т.к это уже ни функция !
Const -может позволять избежать проблемы связанные с динамической типизацией !

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Стрелочная функция

A

const.log ( ‘Hey there’)
a() // ‘Hey there’
a=10 //TypeError:
Assignment to constant variable
a ()

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Объект ?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Объект и получение свойств из объекта ?

A

Const myCity= {
city : ‘New York’,
popular:true,
country: ‘USA’
}
Чтобы получить какое-то свойство из объекта нужно .
console.log (my City.city) -к примеру и интерпретатор даст
// ‘New York’
Также можно получить
console.log (myCity.popular)
// true

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Используя точечную запись изменить свойства объекта и даже если const работает

A

const myCity= {
city: ‘New York’
myCity. city = ‘Las Vegas ‘
console.log (myCity)
// {city: ‘Las Vegas’ }

Const касается переменной , а ни ее свойств!

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Добавление новых свойств в объект

A

const myCity = {
city: ‘New York’
}
myCity.popular=true
console.log (myCity)
Должно вывести true
myCity.country= ‘USA’
console.log (myCity) -после данного вывода я получил три свойства в данном объекте:
Значение переменной ни меняется -именно поэтому обходим const !

//{city:’New York’,popular:true,country:USA}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Удаление свойства из объекта

A

const myCity= {
city: ‘New York’
popular:true,
country: ‘USA’
}
delete myCity.country
console.log(myCity)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Доступ к значению свойства с использованием скобок !

A

const myCity = {
city: ‘New York’
}
myCity [popular] = true
console.log (myCity)
// {city: ‘New York’, popular: true}
const countryPropertyName=‘country’
myCity [countryPropertyName]= ‘USA’
console.log(myCity)
// {city: ‘New York’,popular: true,country: ‘USA’}
Добавление свойства через квадратные скобки нужно если значение свойства является значением той-или иной переменной!
Also called : Bracket notation
Во втором примере : country имеется в значении и тем самым когда я объявляю значение тем же словом ,которое является значением другого свойства-надо делать через квадратные скобки !
Также можно совершать удаление через delete !

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Объекты -вложенные свойства !?

A

const myCity= {
city: ‘New York,
info: {
isPopular:true,
country: ‘USA’
}
}
console.log(myCity.info.IsPopular)
//true
delete myCity.info [‘isPopular]
console.log(myCity)
// {city: ‘New York’,info:
{country: ‘USA’}}
В данном примере у объекта myCity есть свойство info, которое имеет в значении объект и этот объект уже имеет своих два свойство
isPopular:true,
country :’ USA’
Здесь иерархия объектов и чтобы дойти до isPopular, надо console.log( myCity.info.isPopular) две точки , чтобы добраться до данного объекта , который находится внутри объекта -как матрешка !
Внимание на запись с квадратными скобками ! И точечную запись .Но здесь квадратные скобки бесполезны т.к их нужно использовать когда в свойствах такое же название как и имя переменной !

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Объекты использование переменных

A

const name = ‘Bogdan’
const postsQty=23
const userProfile= {
name: name,
postsQty: postsQty,
hasSignedAgreement: false-фолс
}

Здесь свойство и переменная имеют одинаковые значения -так вот , это можно не записывать ! Просто ставишь запятую и это считается дублированием .
Дубляж лучше первыми выставлять в объекте , чтобы бы было более понятней !

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Глобальные объекты?

A

Window -присутствует в браузере
Global -такой объект присутствует в node.js

Унифицированный глобальный объект : globalThis- благодаря этой записи я получу из терминала также Глобал объект , а из интернет консоли window !
window.console.log(10) -я могу получать доступ к свойствам глобального объекта window .
Либо просто console.log (10) веб-браузер будет понимать , что я пытаюсь получить доступ к одному из свойств глобального объект window !

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Методы

A

const myCity = {
city: ‘New York’
cityGreeting:function () {
console.log ( Greetings!!’)
}
}
myCity.cityGreeting()
Две скобки после функции -это опциональные скобки и между фигурными скобками находится тело функции!
И если у меня есть объект с таким методом , то вызов на нижней строке с опциональными скобками ☝️
Методы свойства объекта , которые содержат функции !
Вообще можно без ключевого слова function , а просто ставь опциональные скобки !
Запомни вызовы функции и свойств !
myCity.city
myCity.city Greeting()
Метод это тоже свойство -просто свойство с функцией это метод!

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

JSON ?

A

Java script object notation
{
“userld”:1,
“Id”:1,
“title”:1,
“title”: Test title”,
“status”: {
“completed”:false
}
}
Это формат обмена данными
Между компьютерами в интернете!
Обычно когда я загружаю любую веб-страницу , эта страница обращается к другим серверам, чтобы получить данные и показать их мне на экране !
Картинки или текст , возможно посты человека !
Чтобы передать такие данные с серверов -используется этот формат !
Двойные кавычки , т.к это формат записи JSON !
Тут вложенный объект !

20
Q

Передача данных в JSON?
Как происходит ?

Как можно конвертировать в JAVASCRIPT ? Или наоборот ?

A

{“userId”:1, “id”: 1, “title”: “Test title”, “status”: {“completed”: false}}
JSON -передается в виде строки

Это метод
JSON.parse()
То есть , если я получил код закодированный по методу JSON , я могу передать его как аргумент в вызове метода JSON.parse() и в результате получу JAVASCRIPT объект !
Обратная функция :
JSON.stringify() эта функция способна перевести с JavaScript формат на JSON !

21
Q

Вызов и конвертация объекта из формата JAVASCRIPT в формат JSON и обратно !

A

const post = {
title: ‘My post’,
likesQty: 5
}
undefined -это будет
post
title: ‘My post’, likesQty: 5}

JSON-просто вызов данного объект
JSON.stringify(post) -это уже конвертация с языка Java на формат JSON
{ “title”:”My post”,”likesQty”}’
- А это уже что вышло !
Обратная конвертация
const postStringified=JSON.stringify(post)-данная строка -это присвоение название объекту, чтобы дальше его конвертировать !
Будет undefined
JSON.parse(postStringified)-и дальше все вернется в JavaScript формат =>
{title: ‘My post’, likesQty: 5}
likesQty:5
title : “My post”

22
Q

Мутация в JAVASCRIPT

A

const a=10
let b=a
b=30
console.log (a) //10
console.log(b)//30
Происходит копирование значения (а) в b
Я ввел в консоли проверку по console.log (b) и выдало 10 как и в переменой (a) до того как присвоил переменной b=30

23
Q

Значение ссылочного типа ?

A

const person= {
name: ‘Bob’,
age:21
person.age=22
person.isAdult=true
console.log ( person.age) //22
console.log(person.IsAdult) //true
Снова изменяем значения свойств и здесь объект мутирует !
Мутация объекта на который ссылается переменная person !

24
Q

Мутирование копий ?

A

const person = {
name: ‘Bob’,
age: 25
}
const person2=person
person2.age=26
person2.isAdult = true
console .log(person.age) //26
console.log(person.isAdult)//true
После копирования ссылки
объекта person в переменную person 2 -значения также можно изменять-то есть они перенеслись ! И после изменения значения -даже если эта копия, то значение изменяется и в оригинале как это произошло с age в этом случае и через
console.log( person.age) //26
Будет и в копии и в оригинале !
Copy by reference -копирование по ссылке !
Изменяя копию -также изменяется исходный объект,это надо понимать !
Person2 , это всего лишь ссылка и мы переходим по ссылке и дальше изменяем свойства объекта person!

25
Как избежать мутаций в JavaScript? Пример 1
const person = { name: ‘Bob’, age:25 } const person2= Object.assign({},person) person2.age = 26 console.log( person.age )//25 console.log(person2.age)//26 Чтобы обойти мутацию копий и оставить копии свои значения, а исходному варианту Свои. Используем метод assign , который является методом объекта Object , а объект Object в свою очередь является свойством глобального объекта ,поэтому доступен в веб-браузере -так и в Node.Js. Assign -это один из методов объекта Object ! Благодаря этому методу можно создать новый объект на основе старого ! Нельзя изменить вложенный объект , т.к он уже со свойствами , поэтому менять можно только корневые значения !
26
Записи переменой с большой буквы ?
Object -записан с заглавной буквы и такой формат записи называется Pascale case и используется для записи классов и типов в Java! И Object является прототипом всех объектов в JavaScript !
27
Как избежать мутации объект. Пример 2
const person = { name: ‘Bob’, age: 25 } const person2 = { … person} person2.name = ‘Alice’ console.log(person2.name) //Alice console.log(person.name)//Bob Три точки -это оператор spread -или разделение объекта на свойства ! Если у объекта есть свойств, которые ссылаются на вложенные объекты , то ссылки сохранятся и когда я буду пытаться в скопированном объекте менять вложенные объекты-они будут также меняться и в оригинальном объекте ! То есть частично объект anyway будет меняться !
28
Как избежать мутаций ! Вариант 3
const person = { name: ‘Bob’, age: 25 } const person2= JSON.parse( JSON.stringify(person)) person.name=‘Alice’ console.log( person.name) //Alice console.log.(person2.name) //Bob Сначала через stringify, я конвертирую объект в формат JSON, а после работает JSON parse и происходит обратная конвертация в объект JAva ! Происходит двойная конвертация! И благодаря этому можно менять даже вложенные объекты и ссылки на них не сохраняются . То есть менять можно person2 , person-и изменения будут на каждом из них , а не на обоих сразу !
29
Функция ?
Функция -это блог кода , который можно выполнять многократно ! let a = 5 let b = 3 let c c = a+b console.log (c) // 8 a = 8 b = 12 c = a+b console .log(c) // 20 Блок кода выглядит идентичным, а это уже ни оптимально ! Можно избежать этого с помощью функции ! let a = 5 let b = 3 function sum( a, b) { const c = a+b console.log(c) } sum(a,b) //8 a = 8 b = 12 sum ( a.b) //20 Внутри данной функции суммируются значения двух переменных и запрос в консоль за результатом уже вложен - то есть автоматом через функцию , можно запрашивать объединение переменных и ответ через sum(a,b) То есть в теле функции можно задавать определенные действия и дальше уже ни ломать голову , а просто запрашивать функцию со значениями ! К примеру в данном примере , я могу менять значения переменных и получать ответ -это как своего рода калькулятор !
30
Функция может быть ?
Именованной ! Анонимной ! Присвоенной переменной ! Аргументом при вызове другой функции! И также может быть значением свойства(метода) объекта ! Функция это объект в JAVASCRIPT )
31
Пример функции ! ?
function myFn(a,b){ let c a = a+1 c = a+b return c } Function (a,b) { arguments :null caller: null length: 2 name: ‘myFn’ } Используя точечную запись можно получить доступ к свойствам ! console.dir(myFn.name ) к примеру!
32
Структура функции
function myFn(a,b) { a= a+1 c= a+b return c -после этой строки функция прекращает выполнения любых дальнейших инструкций ! То есть если после этой строки задать еще операции -они не будут выполнены ! Если функция не имеет инструкции return , то она возвращает undefined !
33
Вызов функции
function myFn(a,b) { let c a = a + b c = a + b return c } myFn(10,3) Значения параметров в функции определяются в вызове этой функции ! Аргументы , это те значения , которые я передаю в вызове функции ! Параметры -это то , что в скобках !
34
Я над этим ломал голову Касательно функции и ее содержания ! Назначение параметров через аргументацию в конце !
function myFn(a, b) { let c a = a + 1 c = a + b return c } const soft = myFn(10,3) console.log(soft) То есть , я пытался вызвать функцию без присваивание ее к какой либо переменной ! Как итог нужно сначала собрать полную картину для интерпретатора , а потом уже запрашивать ответ ! Аргументы опциональны! Параметры опциональны ! Инструкция со словом return опционально! Если инструкция с ключевым словом return отсутствует , то вывод будет undefined !
35
Useful commands on MacBook
Command-A: Select All items. Shift-Command-5: In macOS Mojave or later, take a screenshot or make a screen recording. Or use Shift-Command-3 or Shift-Command-4 for screenshots. Learn more about screenshots Command Z отмена предыдущей команды command , shift Z Command F , поиск объектов в документе или открытие окна find ! Command F , переход в полный экран , если поддерживается программой!
36
Нужно уяснить себе этот момент
Не нужно действовать от ощущения того, что это надо и нужно страдать ( достигать любыми способом) -надо фокусироваться на спокойствие и гармонии внутри , а это в свою очередь должно быть основным топливом любого действия -тем самым уровень к.п.д увеличится в разы и самому комфортно !
37
Самая короткая функция ?
function myFn() {} myFn// undefined Есть название , нет параметром и аргументов, но есть круглые скобки , которые являются частью синтаксиса функции ! Тело функции -фигурные скобки !
38
Передача значения по ссылке ?
const.personOne = { name : ‘Bob’, Age : 21 } function increasePersonAge(person) { person.age += 1 return person } increasePersonAge(personOne) console.log( PersonOne.age)//22 Здесь функция мутирует внешний объект через person ! increasePersonAge(personOne) -это передача объекта по ссылке -то есть я передал функцию { person.age += 1 return person } Я передал эту функцию или объект первой переменой ! Но внутри функции ни рекомендуется мутировать внешние объекты ! Person на входе в функцию ссылается на самый верхний объект, но с помощью Object.assign ({},person) -я создаю новый объект и формирую его исходя из старых свойств объекта person! То есть udatedPerson это новый объект, который я меняю в функции и в конце функции с помощью return , я возвращаю новый объект to updatedPerson! То есть return это возвращение объекту updatedPerson -результат работы функции! И результат данной функции, я присваиваю уже новой переменой: const updatedPersonOne = increasePersonAge(personOne)
39
Callback Function КолБэк
function anotherFunction() { } function fnWithCallback(callbackFunction( } fnWithCallback(anotherFunction)-именно так происходит вызов То есть первое -это то , что я в тело второй функции внес другую функцию и при вызова этой функции я получу эту другую функцию !
40
Пример callback function And setTimeout
function printMyName () { console.log (‘Bogdan’) setTimeout(printMyName,1000) setTimeout -это функция глобального объекта . Она встроена по умолчанию как один из методов глобального объекта ! Эта функция вызывает внутри себя функцию, которая передана как первый аргумент в вызове функции ! Данная функция как самособирающий робот . Я вызываю только название функции, а сама функция вызывается внутри setTimeout! SetTimeout -работает таким образом , что внутри вызова этой функции есть два аргумента 1-й это название функции и второй этой число в миллисекундах. SetTimeout-вызывает callBack функцию в данном примере (printMyName)- через определенное время !
41
Правила работы с функциями!
1-Называть функции исходя из выполняемых задач ! 2-Одна функция должна выполнять одну задачу -single purpose ! 3-Не рекомендуется изменять внешние относительно функции переменные! Pure function!
42
Глобальная область видимости ?
Глобальная область видимости будет выделять такие обьекты как window в консоли и global в node.js. Можно и новые переменные определять в глобальной области видимости ! Также можно создавать локальные области видимости а внутри них создавать переменные ! Есть локальные переменные -есть глобальные переменные , если ни задавать переменную в локальной видимости , то при ее вызове выход будет с глобальной области видимости ! Пример ; let a let b function myFn () { let b a = true b = 10 console.log(b) } myFn() -это вызов функции в данном случае и интерпретатор выдаст внутренний алгоритм ! console.log(b) -касательно свойств функции : иногда используется для вывода каких -то свойств !
43
Цепочка областей видимости ?
const a = 5 function myFn () { function innerFn () { console.log(a) //5 } innerFn() } myFn ()
44
Цепочка областей видимости ?
const a = 5 function myFn() { function innerFn() { console.log(a) //5 } innerFn() } myFn() Внутри функции myFn , я объявил еще одну функцию innerFn -внутренняя функция, которая выводит в консоль значение переменной “a” . А после мы вызываем функцию «innerFn”внутри функции myFn . Если я объявлю функцию innerFn в самом конце , то интерпретатор выдаст неопределенно т.к данная функция не задана в глобальной области видимости ! Ее можно вызвать только внутри функции myFn , т.к она назначена внутри данной функции ! Есть глобальная область видимости , где myFn , а в ней уже создается локальная область InnerFn, которая имеет вывод ! Область видимости для функции innerFn -это выход за рамки , поэтому после объявления через console переменой “a” , я получил 5 .
45
Жизненный цикл областей видимости и влияние того , где задаешь переменой значение в локальной области или в глобальной !?
let a let a function () { let b a = true b = 10 console.log (b) myFn() console.log (a) //true console .log (b) //undefined Переменная b -сначала объявляется через let в глобальной области видимости ! Но без значения , поэтому при ее вызове будет undefined ! Потом b- вызывается в функции -локальной области видимости и в ней же назначается , а потому назначение только в этой функции и котируется ! После вызова функции myFn , функция решит свой алгоритм и выдаст 10 , а дальше значения переменных в ней уничтожаться -то есть они не будут влиять на переменные глобальной области видимости или любой другой локальной ! Но переменная “a” имеет другие характеристики : она ни объявляется в функции ,то есть нет второй такой же переменой в функции -именно поэтому при вызове этой переменной в глобальной области видимости она будет ссылаться на значение внутри функции . Внутри функции нельзя изменять внешние переменные . Переменные внутри локальных областей видимости имеют приоритет !
46
Области видимости Это про нелепый пример ?
function myFn () { a = true console.log (a) //true } myFn() console.log(a) // true Я в этом примере ни объявлял переменную , но присвоил переменной значение (как будто бы ее уже объявил где-то ) а все потому что переменная «а» будет автоматически объявлена в глобальной области видимости ! И тем самым после совершения алгоритма функции, я смогу вызвать данную переменную и ее значение в отобразится в консоли !